Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Aug 14, 2021. It is now read-only.
/dharmaPublic archive

Commit4253e07

Browse files
committed
Support to generate a range of variables (#13)
1 parentf2ef80d commit4253e07

File tree

3 files changed

+26
-12
lines changed

3 files changed

+26
-12
lines changed

‎dharma/core/dharma.py‎

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
fromcollectionsimportOrderedDict
1111

1212
ifsys.version_info[0]==2:
13-
fromextensionsimport*# pylint: disable=E0401,W0401
13+
fromextensionsimport*# pylint: disable=E0401,W0401
1414
else:
15-
fromdharma.core.extensionsimport*# pylint: disable=W0401,W0614
15+
fromdharma.core.extensionsimport*# pylint: disable=W0401,W0614
1616

1717

1818
classGenState:
@@ -96,7 +96,7 @@ def __init__(self, ident, machine):
9696
self.namespace=machine.namespace
9797
self.lineno=machine.lineno
9898

99-
defid(self):# pylint: disable=invalid-name
99+
defid(self):# pylint: disable=invalid-name
100100
return"Line %d [%s]"% (self.lineno,self.namespace)
101101

102102
def__hash__(self):
@@ -136,7 +136,7 @@ def append(self, value):
136136
return
137137
self.leaf.append(value)
138138

139-
defgenerate(self,state):# pylint: disable=too-many-branches
139+
defgenerate(self,state):# pylint: disable=too-many-branches
140140
ifnotstate.leaf_mode:
141141
state.leaf_trigger+=1
142142
ifstate.leaf_trigger>DharmaConst.LEAF_TRIGGER:
@@ -186,12 +186,14 @@ def clear(self):
186186

187187
defgenerate(self,state):
188188
"""Return a random variable if any, otherwise create a new default variable."""
189-
ifself.count:
189+
ifself.count>=random.randint(DharmaConst.VARIABLE_MIN,DharmaConst.VARIABLE_MAX):
190190
return"%s%d"% (self.var,random.randint(1,self.count))
191-
self.count+=1
192191
var=random.choice(self)
192+
prefix=self.eval(var[0],state)
193+
suffix=self.eval(var[1],state)
194+
self.count+=1
193195
element_name="%s%d"% (self.var,self.count)
194-
self.default="%s%s%s"% (self.eval(var[0],state),element_name,self.eval(var[1],state))
196+
self.default+="%s%s%s\n"% (prefix,element_name,suffix)
195197
returnelement_name
196198

197199

@@ -202,7 +204,7 @@ def generate(self, state):
202204
returnself.eval(random.choice(self),state)
203205

204206

205-
classDharmaMachine:# pylint: disable=too-many-instance-attributes
207+
classDharmaMachine:# pylint: disable=too-many-instance-attributes
206208
def__init__(self,prefix="",suffix="",template=""):
207209
self.section=None
208210
self.level="top"
@@ -237,13 +239,13 @@ def __init__(self, prefix="", suffix="", template=""):
237239
defprocess_settings(self,settings):
238240
"""A lazy way of feeding Dharma with configuration settings."""
239241
logging.debug("Using configuration from: %s",settings.name)
240-
exec(compile(settings.read(),settings.name,'exec'),globals(),locals())# pylint: disable=exec-used
242+
exec(compile(settings.read(),settings.name,'exec'),globals(),locals())# pylint: disable=exec-used
241243

242244
defset_namespace(self,name):
243245
self.namespace=name
244246
self.lineno=0
245247

246-
defid(self):# pylint: disable=invalid-name
248+
defid(self):# pylint: disable=invalid-name
247249
return"Line %d [%s]"% (self.lineno,self.namespace)
248250

249251
defparse_line(self,line):
@@ -372,6 +374,14 @@ def parse_assign_value(self, tokens):
372374
self.current_obj.append(tokens)
373375

374376
defparse_assign_variable(self,tokens):
377+
"""
378+
Example:
379+
tokens
380+
dharma.String: 'let ',
381+
dharma.ElementXRef: 'GrammarNS:<VarName>',
382+
dharma.String: '= new ',
383+
dharma.ValueXRef: 'GrammarNS:<ValueName>'
384+
"""
375385
fori,tokeninenumerate(tokens):
376386
ifisinstance(token,ElementXRef):
377387
variable=token.value
@@ -385,7 +395,7 @@ def parse_assign_variable(self, tokens):
385395
ifnotisinstance(self.current_obj,DharmaVariable):
386396
logging.error("%s: Inconsistent object for variable assignment",self.id())
387397
sys.exit(-1)
388-
prefix,suffix=tokens[:i],tokens[i+1:]# pylint: disable=undefined-loop-variable
398+
prefix,suffix=tokens[:i],tokens[i+1:]# pylint: disable=undefined-loop-variable
389399
self.current_obj.append((prefix,suffix))
390400

391401
defparse_assign_variance(self,tokens):

‎dharma/core/extensions.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ class DharmaConst:
1616
VARIANCE_TEMPLATE="%s"
1717
VARIANCE_MIN=1
1818
VARIANCE_MAX=8
19+
VARIABLE_MIN=1
20+
VARIABLE_MAX=4
1921

2022

2123
classMetaBlock:

‎dharma/settings.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# pylint: disable = undefined-variable
22
DharmaConst.VARIANCE_MIN=1
3-
DharmaConst.VARIANCE_MAX=1
3+
DharmaConst.VARIANCE_MAX=8
4+
DharmaConst.VARIABLE_MIN=1
5+
DharmaConst.VARIABLE_MAX=4
46
DharmaConst.VARIANCE_TEMPLATE="%s"
57
DharmaConst.MAX_REPEAT_POWER=12
68
DharmaConst.LEAF_TRIGGER=256

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp