diff options
| author | s-ol <s+removethis@s-ol.nu> | 2022-11-29 21:53:53 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2022-11-29 21:53:53 +0000 |
| commit | e356564ac4611d60612a7fb28703945e40217268 (patch) | |
| tree | d07b48c775543bda301cd2e9007d6b7376efdca1 | |
| parent | support "download" and "facet" options for mmm-link (diff) | |
| download | mmm-e356564ac4611d60612a7fb28703945e40217268.tar.gz mmm-e356564ac4611d60612a7fb28703945e40217268.zip | |
add dynfn type for non-cacheable evaluation
| -rw-r--r-- | mmm/mmmfs/builtins.moon | 7 | ||||
| -rw-r--r-- | mmm/mmmfs/conversion.moon | 7 | ||||
| -rw-r--r-- | mmm/mmmfs/fileder.moon | 4 |
3 files changed, 15 insertions, 3 deletions
diff --git a/mmm/mmmfs/builtins.moon b/mmm/mmmfs/builtins.moon index f25544e..0621670 100644 --- a/mmm/mmmfs/builtins.moon +++ b/mmm/mmmfs/builtins.moon @@ -59,6 +59,13 @@ converts = { transform: (val, fileder) => val fileder } { + inp: 'dynfn -> (.+)', + out: '%1', + cost: 1,1 + transform: (val, fileder) => val fileder + dynamic: true + } + { inp: 'mmm/component', out: 'mmm/dom', cost: 3 diff --git a/mmm/mmmfs/conversion.moon b/mmm/mmmfs/conversion.moon index 44688e6..ac8d9f7 100644 --- a/mmm/mmmfs/conversion.moon +++ b/mmm/mmmfs/conversion.moon @@ -155,15 +155,20 @@ print_conversions = (conversions) -> -- returns converted value err_and_trace = (msg) -> debug.traceback msg, 2 apply_conversions = (fileder, conversions, value, key) -> + static = true for i=#conversions,1,-1 refs\push! step = conversions[i] ok, value = xpcall step.convert.transform, err_and_trace, step, value, fileder, key refs\pop! + + if step.convert.dynamic + static = false + if not ok error "error while converting #{fileder} #{key} from '#{step.from}' to '#{step.to}':\n#{value}" - value + value, static -- find and apply a conversion path from 'have' to 'want' -- * have - start type string or list of type strings diff --git a/mmm/mmmfs/fileder.moon b/mmm/mmmfs/fileder.moon index cd50a40..5d5ffa2 100644 --- a/mmm/mmmfs/fileder.moon +++ b/mmm/mmmfs/fileder.moon @@ -283,8 +283,8 @@ class Fileder key, conversions = @find want if key - value = apply_conversions @, conversions, @facets[key], key - CACHE\set @, want, value if CACHE + value, static = apply_conversions @, conversions, @facets[key], key + CACHE\set @, want, value if CACHE and static value, key -- like @get, throw if no value or conversion path |
