Class: DxSliml

Inherits:
Object
  • Object
show all
Defined in:
lib/dx_sliml.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sliml = nil, dynarex = nil, dx: dynarex, fields: nil) ⇒ DxSliml

Returns a new instance of DxSliml.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/dx_sliml.rb', line 12

def initialize(sliml=nil, dynarex=nil, dx: dynarex, fields: nil)

  
  if sliml.nil? and fields.nil? then
    
    if dx then
      
      @dx = dx.is_a?(Dynarex) ? dx : Dynarex.new(dx)    
      # fetch the fields from the schema
      fields = @dx.schema[/\(([^\)]+)/,1].split(/,\s/)
      
    else
      raise 'RxSliml: please enter a sliml string or an array of fields'
    end
    
  else
    @dx = dx.is_a?(Dynarex) ? dx : Dynarex.new(dx)    
  end
  
  
  
  sliml ||= create_sliml(fields)
  @sliml = sliml    
  
     
  sliml.gsub!(/\{[^\}]+/) do |x|
    x.gsub(/["']?(\S*)\$(\w+)([^"']*)["']?/,'\'\1{\2}\3\'')
  end
  
  xml = LineTree.new(sliml).to_xml declaration: false, pretty: true
  
  @recxsl = xml.gsub(/\$(\w+)/, '<xsl:value-of select="\1"/>')
  
  @to_xslt = build_xslt

  #jr190316 xslt  = Nokogiri::XSLT(@to_xslt)
  #jr190316 @to_html = xslt.transform(Nokogiri::XML(@dx.to_xml))
  @to_html = Rexslt.new(@to_xslt, dx.to_xml).to_s

end

Instance Attribute Details

#to_htmlObject (readonly)

Returns the value of attribute to_html.



10
11
12
# File 'lib/dx_sliml.rb', line 10

def to_html
  @to_html
end

#to_xsltObject (readonly)

Returns the value of attribute to_xslt.



10
11
12
# File 'lib/dx_sliml.rb', line 10

def to_xslt
  @to_xslt
end

Instance Method Details

#to_slimlObject



53
54
55
56
57
# File 'lib/dx_sliml.rb', line 53

def to_sliml()
  
  @sliml
  
end