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
52
# 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_html_xslt
  xml_xslt = build_xml_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
  @to_xml = Rexslt.new(xml_xslt, dx.to_xml).to_xml

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_xmlObject (readonly)

Returns the value of attribute to_xml.



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

def to_xml
  @to_xml
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



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

def to_sliml()
  
  @sliml
  
end