fabulator 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. data/History.txt +20 -0
  2. data/Rakefile +1 -0
  3. data/VERSION +1 -1
  4. data/features/step_definitions/expression_steps.rb +1 -1
  5. data/features/step_definitions/xml_steps.rb +2 -1
  6. data/features/support/env.rb +1 -0
  7. data/lib/fabulator.rb +13 -5
  8. data/lib/fabulator/action.rb +86 -19
  9. data/lib/fabulator/core/actions.rb +21 -6
  10. data/lib/fabulator/core/actions/choose.rb +16 -35
  11. data/lib/fabulator/core/actions/for_each.rb +20 -30
  12. data/lib/fabulator/core/actions/variables.rb +6 -8
  13. data/lib/fabulator/core/constraint.rb +2 -2
  14. data/lib/fabulator/core/filter.rb +0 -13
  15. data/lib/fabulator/core/group.rb +21 -25
  16. data/lib/fabulator/core/parameter.rb +5 -17
  17. data/lib/fabulator/core/state.rb +4 -44
  18. data/lib/fabulator/core/state_machine.rb +10 -38
  19. data/lib/fabulator/core/transition.rb +6 -39
  20. data/lib/fabulator/expr/axis.rb +2 -2
  21. data/lib/fabulator/expr/bin_expr.rb +3 -3
  22. data/lib/fabulator/expr/context.rb +37 -6
  23. data/lib/fabulator/expr/function.rb +9 -3
  24. data/lib/fabulator/expr/literal.rb +1 -1
  25. data/lib/fabulator/expr/node.rb +1 -1
  26. data/lib/fabulator/expr/node_logic.rb +1 -1
  27. data/lib/fabulator/expr/parser.rb +1 -1
  28. data/lib/fabulator/expr/predicates.rb +1 -1
  29. data/lib/fabulator/expr/statement_list.rb +4 -0
  30. data/lib/fabulator/expr/union_expr.rb +1 -1
  31. data/lib/fabulator/lib.rb +69 -0
  32. data/lib/fabulator/lib/action.rb +13 -0
  33. data/lib/fabulator/lib/attribute.rb +9 -0
  34. data/lib/fabulator/lib/lib.rb +47 -0
  35. data/lib/fabulator/lib/structural.rb +13 -0
  36. data/lib/fabulator/structural.rb +92 -0
  37. data/lib/fabulator/{action_lib.rb → tag_lib.rb} +89 -51
  38. data/lib/fabulator/template/standard_tags.rb +4 -3
  39. data/xsm_expression_parser.racc +1 -1
  40. metadata +27 -8
  41. data/TODO +0 -7
  42. data/features/xsm-inheritance.feature +0 -46
@@ -2,6 +2,7 @@ module Fabulator
2
2
  module Expr
3
3
  class Function
4
4
  def initialize(ctx, nom, args)
5
+ nom.gsub(/\s+/, '')
5
6
  bits = nom.split(/:/, 2)
6
7
  @ns = ctx.get_ns(bits[0])
7
8
  @name = bits[1]
@@ -13,17 +14,22 @@ module Fabulator
13
14
  end
14
15
 
15
16
  def expr_type(context)
16
- klass = ActionLib.namespaces[@ns]
17
+ return [ FAB_NS, 'boolean' ] if @name =~ /\?$/
18
+ klass = TagLib.namespaces[@ns]
17
19
  (klass.function_return_type(@name) rescue nil)
18
20
  end
19
21
 
20
22
  def run(context, autovivify = false)
21
- klass = ActionLib.namespaces[@ns]
23
+ klass = TagLib.namespaces[@ns]
22
24
  return [] if klass.nil?
23
25
  ctx = @ctx.merge(context)
24
- return klass.run_function(
26
+ ret = klass.run_function(
25
27
  ctx, @name, @args.run(ctx)
26
28
  )
29
+ if @name =~ /\?$/
30
+ ret = ret.collect{ |v| v.to([FAB_NS, 'boolean']) }
31
+ end
32
+ ret
27
33
  end
28
34
  end
29
35
 
@@ -23,7 +23,7 @@ module Fabulator
23
23
  def expr_type(context)
24
24
  v = context.get_var(@var)
25
25
  if( v.is_a?(Array) )
26
- ActionLib.unify_types(v.collect{ |i| i.vtype })
26
+ TagLib.unify_types(v.collect{ |i| i.vtype })
27
27
  else
28
28
  v.vtype
29
29
  end
@@ -94,7 +94,7 @@ module Fabulator
94
94
  end
95
95
 
96
96
  def children(n = nil)
97
- op = ActionLib.find_op(@vtype, :children)
97
+ op = TagLib.find_op(@vtype, :children)
98
98
  possible = op.nil? ? @children : op.call(self)
99
99
  if n.nil?
100
100
  possible
@@ -31,7 +31,7 @@ module Fabulator
31
31
  # see if there's a path between @vtype and t
32
32
  # if so, do the conversion
33
33
  # otherwise, return nil
34
- path = Fabulator::ActionLib.type_path(self.vtype, t)
34
+ path = Fabulator::TagLib.type_path(self.vtype, t)
35
35
  return self.anon_node(nil,nil) if path.empty?
36
36
  v = self
37
37
  path.each do |p|
@@ -49,7 +49,7 @@ module_eval(<<'...end xsm_expression_parser.racc/module_eval...', 'xsm_expressio
49
49
  @@regex[:qname] = %r{((?:#{@@regex[:ncname]}:)?#{@@regex[:ncname]})}
50
50
  @@regex[:dollar_qname] = %r{\$#{@@regex[:qname]}}
51
51
  @@regex[:dollar_int] = %r{\$([0-9]+)}
52
- @@regex[:function_name] = %r{#{@@regex[:qname]}\*?\s*(?=\([^:])}
52
+ @@regex[:function_name] = %r{#{@@regex[:qname]}\??\*?\s*(?=\([^:])}
53
53
 
54
54
  @@ops = {
55
55
  '..' => :DOT_DOT,
@@ -26,7 +26,7 @@ module Fabulator
26
26
  # if all boolean and one is true, then keep
27
27
  # if numeric, then keep if position == number
28
28
  # if string and non-blank, then keep
29
- unified_type = Fabulator::ActionLib.unify_types(res.collect{ |r| r.vtype })
29
+ unified_type = Fabulator::TagLib.unify_types(res.collect{ |r| r.vtype })
30
30
  case unified_type.join('')
31
31
  when FAB_NS+'boolean':
32
32
  if res.select{ |r| r.to([FAB_NS, 'boolean']).value }.size > 0
@@ -23,6 +23,10 @@ module Fabulator
23
23
  @statements.empty? && @ensures.empty?
24
24
  end
25
25
 
26
+ def empty?
27
+ @statements.empty? && @ensures.empty?
28
+ end
29
+
26
30
  def run(context, autovivify = false)
27
31
  result = [ ]
28
32
  begin
@@ -6,7 +6,7 @@ module Fabulator
6
6
  end
7
7
 
8
8
  def expr_type(context)
9
- Fabulator::ActionLib.unify_types(@exprs.collect{ |e| e.expr_type(context) })
9
+ Fabulator::TagLib.unify_types(@exprs.collect{ |e| e.expr_type(context) })
10
10
  end
11
11
 
12
12
  def run(context, autovivify = false)
@@ -0,0 +1,69 @@
1
+ #
2
+ # Allows definition of a lib as XSM stuff -- the glue between the core
3
+ # engine and the lib definition
4
+ #
5
+
6
+ # need a way to specify a library entry type -- to support grammars
7
+
8
+ # library ns: http://dh.tamu.edu/ns/fabulator/1.0#
9
+ #<f:library f:ns="">
10
+ # <action name=''>
11
+ # <attribute name='' type='' as='' /> (could be type='expression')
12
+ # actions...
13
+ # </action>
14
+ #
15
+ # <structure name=''>
16
+ # <attribute ... />
17
+ # <element ... />
18
+ # actions
19
+ # </structure>
20
+ #
21
+ # <function name=''>
22
+ # actions...
23
+ # </function>
24
+ #
25
+ # <type name=''>
26
+ # <op name=''>
27
+ # actions...
28
+ # </op>
29
+ # <to name='' weight=''>
30
+ # actions...
31
+ # </to>
32
+ # <from name='' weight=''>
33
+ # actions...
34
+ # </from>
35
+ # </type>
36
+ #
37
+ # <filter name=''>
38
+ # actions...
39
+ # </filter>
40
+ #
41
+ # <constraint name=''>
42
+ # actions...
43
+ # </constraint>
44
+ #</library>
45
+
46
+ require 'fabulator/lib/lib'
47
+ require 'fabulator/lib/structural'
48
+ require 'fabulator/lib/action'
49
+ require 'fabulator/lib/attribute'
50
+
51
+ module Fabulator
52
+ module Lib
53
+ class LibLib < Fabulator::TagLib
54
+ namespace FAB_LIB_NS
55
+
56
+ structural :library, Lib
57
+ structural :structural, Structural
58
+ structural :action, Action
59
+ structural :attribute, Attribute
60
+ #structural :function, Function
61
+ #structural :mapping, Mapping
62
+ #structural :reduction, Reduction
63
+ #structural :consolidation, Consolidation
64
+ #structural :type, Type
65
+ #structural :filter, Filter
66
+ #structural :constraint, Constraint
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,13 @@
1
+ module Fabulator
2
+ module Lib
3
+ class Action < Fabulator::Structural
4
+ namespace FAB_LIB_NS
5
+
6
+ attribute :name, :static => true
7
+
8
+ contains :attribute
9
+
10
+ has_actions
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ module Fabulator
2
+ module Lib
3
+ class Attribute < Fabulator::Structural
4
+ namespace FAB_LIB_NS
5
+
6
+ attribute :name, :static => true
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,47 @@
1
+ module Fabulator
2
+ module Lib
3
+ class Lib < Fabulator::Structural
4
+
5
+ namespace FAB_LIB_NS
6
+
7
+ attribute :ns, :static => true
8
+
9
+ contains :action, :storage => :hash, :key => :name
10
+ contains :structural, :storage => :hash, :key => :name
11
+ contains :function, :storage => :hash, :key => :name
12
+ contains :mapping, :storage => :hash, :key => :name
13
+ contains :reduction, :storage => :hash, :key => :name
14
+ contains :consolidation, :storage => :hash, :key => :name
15
+ contains :type, :storage => :hash, :key => :name
16
+ contains :filter, :storage => :hash, :key => :name
17
+ contains :constraint, :storage => :hash, :key => :name
18
+
19
+ def register_library
20
+ Fabulator::TagLib.namespaces[@ns] = self
21
+ @attributes.each do |attr|
22
+ Fabulator::TagLib.attributes << [ @ns, attr[:name], attr[:options] ]
23
+ end
24
+ end
25
+
26
+ def compile_action(e, c_attrs)
27
+ end
28
+
29
+ def run_function(context, nom, args)
30
+ end
31
+
32
+ def function_return_type(name)
33
+ (self.function_descriptions[name][:returns] rescue nil)
34
+ end
35
+
36
+ def function_args
37
+ @function_args ||= { }
38
+ end
39
+
40
+ def run_filter(context, nom)
41
+ end
42
+
43
+ def run_constraint(context, nom)
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,13 @@
1
+ module Fabulator
2
+ module Lib
3
+ class Structural < Fabulator::Structural
4
+ namespace FAB_LIB_NS
5
+
6
+ attribute :name, :static => true
7
+
8
+ contains :attribute
9
+
10
+ has_actions
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,92 @@
1
+ module Fabulator
2
+ class Structural < Action
3
+
4
+ def compile_xml(xml, context)
5
+ XML.default_line_numbers = true
6
+ if xml.is_a?(String)
7
+ xml = LibXML::XML::Document.string xml
8
+ end
9
+ if xml.is_a?(LibXML::XML::Document)
10
+ xml = xml.root
11
+ end
12
+
13
+ if context.nil?
14
+ @context = @context.merge(xml)
15
+ else
16
+ @context = context.merge(xml)
17
+ end
18
+
19
+ self.setup(xml)
20
+
21
+ self
22
+ end
23
+
24
+ def self.element(nom)
25
+ @@elements[self.name] = nom
26
+ end
27
+
28
+ def self.contains(nom, opts = { })
29
+ ns = opts[:ns] || self.namespace
30
+ @@structurals ||= { }
31
+ @@structurals[self.name] ||= { }
32
+ @@structurals[self.name][ns] ||= { }
33
+ @@structurals[self.name][ns][nom.to_sym] = opts
34
+ end
35
+
36
+ def self.structurals
37
+ return @@structurals[self.name]
38
+ end
39
+
40
+ def self.accepts_structural?(ns, nom)
41
+ return false if @@structurals.nil?
42
+ return false if @@structurals[self.name].nil?
43
+ return false if @@structurals[self.name][ns].nil?
44
+ return false if @@structurals[self.name][ns][nom.to_sym].nil?
45
+ return true
46
+ end
47
+
48
+ def accepts_structural?(ns, nom)
49
+ self.class.accepts_structural?(ns, nom)
50
+ end
51
+
52
+
53
+ protected
54
+ def setup(xml)
55
+ super
56
+
57
+ #klass = self.class.name
58
+ possibilities = self.class.structurals
59
+
60
+ if !possibilities.nil?
61
+ possibilities.each_pair do |ns, parts|
62
+ parts.each_pair do |nom, opts|
63
+ as = "@" + (opts[:as] || nom.to_s.pluralize).to_s
64
+ if opts[:storage].nil? || opts[:storage] == :array
65
+ self.instance_variable_set(as.to_sym, [])
66
+ elsif opts[:storage] == :hash
67
+ self.instance_variable_set(as.to_sym, {})
68
+ end
69
+ end
70
+ end
71
+
72
+ structs = @context.compile_structurals(xml)
73
+ structs.each_pair do |ns, parts|
74
+ next unless possibilities[ns]
75
+ parts.each_pair do |nom, objs|
76
+ next unless possibilities[ns][nom]
77
+ opts = possibilities[ns][nom]
78
+ as = "@" + (opts[:as] || nom.to_s.pluralize).to_s
79
+ if opts[:storage].nil? || opts[:storage] == :array
80
+ self.instance_variable_set(as.to_sym, self.instance_variable_get(as.to_sym) + objs)
81
+ else
82
+ tgt = self.instance_variable_get(as.to_sym)
83
+ objs.each do |obj|
84
+ tgt[obj.send(opts[:key] || :name)] = obj
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -1,6 +1,8 @@
1
1
  module Fabulator
2
- module ActionLib
2
+ class TagLib
3
3
  @@action_descriptions = {}
4
+ @@structural_descriptions = {}
5
+ @@structural_classes = {}
4
6
  @@function_descriptions = {}
5
7
  @@function_args = { }
6
8
  @@namespaces = {}
@@ -18,6 +20,12 @@ module Fabulator
18
20
  def self.action_descriptions
19
21
  @@action_descriptions
20
22
  end
23
+ def self.structural_descriptions
24
+ @@structural_descriptions
25
+ end
26
+ def self.structural_classes
27
+ @@structural_classes
28
+ end
21
29
  def self.function_description
22
30
  @@function_description
23
31
  end
@@ -43,6 +51,12 @@ module Fabulator
43
51
  def self.action_descriptions=(x)
44
52
  @@action_descriptions = x
45
53
  end
54
+ def self.structural_descriptions=(x)
55
+ @@structural_descriptions = x
56
+ end
57
+ def self.structural_classes=(x)
58
+ @@structural_classes = x
59
+ end
46
60
  def self.function_description=(x)
47
61
  @@function_description = x
48
62
  end
@@ -59,19 +73,27 @@ module Fabulator
59
73
  @@axes = x
60
74
  end
61
75
 
62
- def self.included(base)
63
- base.extend(ClassMethods)
64
- base.module_eval do
65
- def self.included(new_base)
66
- super
67
- new_base.action_descriptions.merge! self.action_descriptions
68
- new_base.function_descriptions.merge! self.function_descriptions
69
- new_base.function_args.merge! self.function_args
70
- new_base.types.merge! self.types
71
- end
76
+ def structural_class(nom)
77
+ Fabulator::TagLib.structural_classes[self.class.name][nom]
72
78
  end
79
+
80
+ def self.inherited(base)
81
+ base.extend(ClassMethods)
73
82
  end
74
83
 
84
+ # def self.included(base)
85
+ # base.extend(ClassMethods)
86
+ # base.module_eval do
87
+ # def self.included(new_base)
88
+ # super
89
+ # new_base.action_descriptions.merge! self.action_descriptions
90
+ # new_base.function_descriptions.merge! self.function_descriptions
91
+ # new_base.function_args.merge! self.function_args
92
+ # new_base.types.merge! self.types
93
+ # end
94
+ # end
95
+ # end
96
+
75
97
  def self.find_op(t,o)
76
98
  (@@types[t[0]][t[1]][:ops][o] rescue nil)
77
99
  end
@@ -209,6 +231,12 @@ module Fabulator
209
231
  end
210
232
  end
211
233
 
234
+ def compile_structural(e, c)
235
+ if self.class.method_defined? "structural:#{e.name}"
236
+ send "structural:#{e.name}", e, c
237
+ end
238
+ end
239
+
212
240
  def run_function(context, nom, args, depth=0)
213
241
  ret = []
214
242
 
@@ -310,36 +338,40 @@ module Fabulator
310
338
  end
311
339
 
312
340
  def action_descriptions(hash = nil)
313
- Fabulator::ActionLib.action_descriptions[self.name] ||= (hash ||{})
341
+ Fabulator::TagLib.action_descriptions[self.name] ||= (hash ||{})
314
342
  end
315
343
 
316
344
  def function_descriptions(hash = nil)
317
- Fabulator::ActionLib.action_descriptions[self.name] ||= (hash ||{})
345
+ Fabulator::TagLib.action_descriptions[self.name] ||= (hash ||{})
318
346
  end
319
347
 
320
348
  def register_namespace(ns)
321
- Fabulator::ActionLib.namespaces[ns] = self.new
349
+ Fabulator::TagLib.namespaces[ns] = self.new
350
+ end
351
+
352
+ def namespace(ns)
353
+ Fabulator::TagLib.namespaces[ns] = self.new
322
354
  end
323
355
 
324
356
  def register_attribute(a, options = {})
325
357
  ns = nil
326
- Fabulator::ActionLib.namespaces.each_pair do |k,v|
358
+ Fabulator::TagLib.namespaces.each_pair do |k,v|
327
359
  if v.is_a?(self)
328
360
  ns = k
329
361
  end
330
362
  end
331
- Fabulator::ActionLib.attributes << [ ns, a, options ]
363
+ Fabulator::TagLib.attributes << [ ns, a, options ]
332
364
  end
333
365
 
334
366
  def register_type(nom, options={})
335
367
  ns = nil
336
- Fabulator::ActionLib.namespaces.each_pair do |k,v|
368
+ Fabulator::TagLib.namespaces.each_pair do |k,v|
337
369
  if v.is_a?(self)
338
370
  ns = k
339
371
  end
340
372
  end
341
- Fabulator::ActionLib.types[ns] ||= {}
342
- Fabulator::ActionLib.types[ns][nom] = options
373
+ Fabulator::TagLib.types[ns] ||= {}
374
+ Fabulator::TagLib.types[ns][nom] = options
343
375
 
344
376
  function nom do |ctx, args|
345
377
  args[0].collect { |i|
@@ -349,45 +381,67 @@ module Fabulator
349
381
  end
350
382
 
351
383
  def axis(nom, &block)
352
- Fabulator::ActionLib.axes[nom] = block
384
+ Fabulator::TagLib.axes[nom] = block
353
385
  end
354
386
 
355
387
  def namespaces
356
- Fabulator::ActionLib.namespaces
388
+ Fabulator::TagLib.namespaces
357
389
  end
358
390
 
359
391
  def desc(text)
360
- Fabulator::ActionLib.last_description = RedCloth.new(Util.strip_leading_whitespace(text)).to_html
392
+ Fabulator::TagLib.last_description = RedCloth.new(Util.strip_leading_whitespace(text)).to_html
361
393
  end
362
394
 
363
395
  def action(name, klass = nil, &block)
364
- self.action_descriptions[name] = Fabulator::ActionLib.last_description if Fabulator::ActionLib.last_description
365
- Fabulator::ActionLib.last_description = nil
396
+ self.action_descriptions[name] = Fabulator::TagLib.last_description if Fabulator::TagLib.last_description
397
+ Fabulator::TagLib.last_description = nil
366
398
  if block
367
399
  define_method("action:#{name}", &block)
368
400
  elsif !klass.nil?
369
- action(name) { |e,r|
370
- return klass.new.compile_xml(e,r)
401
+ action(name) { |e,c|
402
+ r = klass.new
403
+ r.compile_xml(e,c)
404
+ r
405
+ }
406
+ end
407
+ end
408
+
409
+ def structural(name, klass = nil, &block)
410
+ self.structural_descriptions[name] = Fabulator::TagLib.last_description if Fabulator::TagLib.last_description
411
+ Fabulator::TagLib.last_description = nil
412
+ if block
413
+ define_method("structural:#{name}", &block)
414
+ elsif !klass.nil?
415
+ structural(name) { |e,c|
416
+ r = klass.new
417
+ r.compile_xml(e,c)
418
+ r
371
419
  }
420
+ Fabulator::TagLib.structural_classes[self.name] ||= {}
421
+ Fabulator::TagLib.structural_classes[self.name][name] = klass
372
422
  end
373
423
  end
374
424
 
425
+ def structural_class(nom)
426
+ (Fabulator::TagLib.structural_classes[self.class.name][nom] rescue nil)
427
+ end
428
+
375
429
  def function(name, returns = nil, takes = nil, &block)
376
430
  self.function_descriptions[name] = { :returns => returns, :takes => takes }
377
- self.function_descriptions[name][:description] = Fabulator::ActionLib.last_description if Fabulator::ActionLib.last_description
431
+ self.function_descriptions[name][:description] = Fabulator::TagLib.last_description if Fabulator::TagLib.last_description
378
432
  #self.function_args[name] = { :return => returns, :takes => takes }
379
- Fabulator::ActionLib.last_description = nil
433
+ Fabulator::TagLib.last_description = nil
380
434
  define_method("fctn:#{name}", &block)
381
435
  end
382
436
 
383
437
  def reduction(name, opts = {}, &block)
384
438
  self.function_descriptions[name] = { :type => :reduction }.merge(opts)
385
- self.function_descriptions[name][:description] = Fabulator::ActionLib.last_description if Fabulator::ActionLib.last_description
386
- Fabulator::ActionLib.last_description = nil
439
+ self.function_descriptions[name][:description] = Fabulator::TagLib.last_description if Fabulator::TagLib.last_description
440
+ Fabulator::TagLib.last_description = nil
387
441
  define_method("fctn:#{name}", &block)
388
442
  cons = self.function_descriptions[name][:consolidation]
389
443
  if !cons.nil?
390
- Fabulator::ActionLib.last_description = self.function_descriptions[name][:description]
444
+ Fabulator::TagLib.last_description = self.function_descriptions[name][:description]
391
445
  consolidation name do |ctx, args|
392
446
  send "fctn:#{cons}", ctx, args
393
447
  end
@@ -396,15 +450,15 @@ module Fabulator
396
450
 
397
451
  def consolidation(name, opts = {}, &block)
398
452
  self.function_descriptions[name] = { :type => :consolidation }.merge(opts)
399
- self.function_descriptions[name][:description] = Fabulator::ActionLib.last_description if Fabulator::ActionLib.last_description
400
- Fabulator::ActionLib.last_description = nil
453
+ self.function_descriptions[name][:description] = Fabulator::TagLib.last_description if Fabulator::TagLib.last_description
454
+ Fabulator::TagLib.last_description = nil
401
455
  define_method("fctn:consolidation:#{name}", &block)
402
456
  end
403
457
 
404
458
  def mapping(name, opts = {}, &block)
405
459
  self.function_descriptions[name] = { :type => :mapping }.merge(opts)
406
- self.function_descriptions[name][:description] = Fabulator::ActionLib.last_description if Fabulator::ActionLib.last_description
407
- Fabulator::ActionLib.last_description = nil
460
+ self.function_descriptions[name][:description] = Fabulator::TagLib.last_description if Fabulator::TagLib.last_description
461
+ Fabulator::TagLib.last_description = nil
408
462
  define_method("fctn:#{name}", &block)
409
463
  end
410
464
 
@@ -431,22 +485,6 @@ module Fabulator
431
485
  def constraint(name, &block)
432
486
  define_method("constraint:#{name}", &block)
433
487
  end
434
-
435
- def compile_actions(xml, rdf_model)
436
- actions = [ ]
437
- xml.each_element do |e|
438
- ns = e.namespaces.namespace.href
439
- #Rails.logger.info("Compiling <#{ns}><#{e.name}>")
440
- next unless Fabulator::ActionLib.namespaces.include?(ns)
441
- actions << (Fabulator::ActionLib.namespaces[ns].compile_action(e, rdf_model) rescue nil)
442
- #Rails.logger.info("compile_actions: #{actions}")
443
- end
444
- #Rails.logger.info("compile_actions: #{actions}")
445
- actions = actions - [ nil ]
446
- #Rails.logger.info("compile_actions returning: #{actions}")
447
- return actions
448
- end
449
-
450
488
  end
451
489
 
452
490
  module Util