xmlconv 1.0.0

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 (94) hide show
  1. data/.gemtest +0 -0
  2. data/History.txt +6 -0
  3. data/LICENSE +339 -0
  4. data/README.txt +29 -0
  5. data/Rakefile +37 -0
  6. data/bin/admin +68 -0
  7. data/bin/xmlconvd +38 -0
  8. data/data/grammar/i2.grammar +73 -0
  9. data/lib/xmlconv/config.rb +61 -0
  10. data/lib/xmlconv/custom/lookandfeel.rb +50 -0
  11. data/lib/xmlconv/i2/address.rb +35 -0
  12. data/lib/xmlconv/i2/date.rb +41 -0
  13. data/lib/xmlconv/i2/document.rb +27 -0
  14. data/lib/xmlconv/i2/header.rb +32 -0
  15. data/lib/xmlconv/i2/order.rb +61 -0
  16. data/lib/xmlconv/i2/parser.rb +23 -0
  17. data/lib/xmlconv/i2/position.rb +45 -0
  18. data/lib/xmlconv/i2/record.rb +11 -0
  19. data/lib/xmlconv/model/address.rb +20 -0
  20. data/lib/xmlconv/model/agreement.rb +10 -0
  21. data/lib/xmlconv/model/bdd.rb +37 -0
  22. data/lib/xmlconv/model/bsr.rb +16 -0
  23. data/lib/xmlconv/model/delivery.rb +15 -0
  24. data/lib/xmlconv/model/delivery_item.rb +24 -0
  25. data/lib/xmlconv/model/document.rb +25 -0
  26. data/lib/xmlconv/model/freetext_container.rb +26 -0
  27. data/lib/xmlconv/model/id_container.rb +22 -0
  28. data/lib/xmlconv/model/invoice.rb +18 -0
  29. data/lib/xmlconv/model/invoice_item.rb +11 -0
  30. data/lib/xmlconv/model/item.rb +19 -0
  31. data/lib/xmlconv/model/item_container.rb +15 -0
  32. data/lib/xmlconv/model/name.rb +27 -0
  33. data/lib/xmlconv/model/part_info.rb +10 -0
  34. data/lib/xmlconv/model/part_info_container.rb +15 -0
  35. data/lib/xmlconv/model/party.rb +20 -0
  36. data/lib/xmlconv/model/party_container.rb +20 -0
  37. data/lib/xmlconv/model/price.rb +10 -0
  38. data/lib/xmlconv/model/price_container.rb +18 -0
  39. data/lib/xmlconv/model/transaction.rb +28 -0
  40. data/lib/xmlconv/state/global.rb +28 -0
  41. data/lib/xmlconv/state/global_predefine.rb +11 -0
  42. data/lib/xmlconv/state/login.rb +39 -0
  43. data/lib/xmlconv/state/transaction.rb +13 -0
  44. data/lib/xmlconv/state/transactions.rb +130 -0
  45. data/lib/xmlconv/util/application.rb +142 -0
  46. data/lib/xmlconv/util/autoload.rb +35 -0
  47. data/lib/xmlconv/util/destination.rb +249 -0
  48. data/lib/xmlconv/util/invoicer.rb +71 -0
  49. data/lib/xmlconv/util/known_user.rb +16 -0
  50. data/lib/xmlconv/util/mail.rb +31 -0
  51. data/lib/xmlconv/util/polling_manager.rb +198 -0
  52. data/lib/xmlconv/util/session.rb +23 -0
  53. data/lib/xmlconv/util/transaction.rb +133 -0
  54. data/lib/xmlconv/util/validator.rb +20 -0
  55. data/lib/xmlconv/view/foot.rb +27 -0
  56. data/lib/xmlconv/view/head.rb +13 -0
  57. data/lib/xmlconv/view/login.rb +36 -0
  58. data/lib/xmlconv/view/navigation.rb +30 -0
  59. data/lib/xmlconv/view/navigationlink.rb +21 -0
  60. data/lib/xmlconv/view/pager.rb +73 -0
  61. data/lib/xmlconv/view/preformatted.rb +54 -0
  62. data/lib/xmlconv/view/template.rb +17 -0
  63. data/lib/xmlconv/view/transaction.rb +42 -0
  64. data/lib/xmlconv/view/transactions.rb +90 -0
  65. data/lib/xmlconv.rb +3 -0
  66. data/test/config.rb +12 -0
  67. data/test/mock.rb +149 -0
  68. data/test/suite.rb +16 -0
  69. data/test/test_i2/address.rb +88 -0
  70. data/test/test_i2/date.rb +50 -0
  71. data/test/test_i2/document.rb +62 -0
  72. data/test/test_i2/header.rb +39 -0
  73. data/test/test_i2/order.rb +94 -0
  74. data/test/test_i2/parser.rb +312 -0
  75. data/test/test_i2/position.rb +65 -0
  76. data/test/test_model/address.rb +35 -0
  77. data/test/test_model/agreement.rb +22 -0
  78. data/test/test_model/bdd.rb +55 -0
  79. data/test/test_model/bsr.rb +38 -0
  80. data/test/test_model/delivery.rb +79 -0
  81. data/test/test_model/delivery_item.rb +52 -0
  82. data/test/test_model/freetext_container.rb +45 -0
  83. data/test/test_model/invoice.rb +65 -0
  84. data/test/test_model/invoice_item.rb +41 -0
  85. data/test/test_model/name.rb +57 -0
  86. data/test/test_model/part_info.rb +24 -0
  87. data/test/test_model/party.rb +96 -0
  88. data/test/test_model/price.rb +24 -0
  89. data/test/test_util/application.rb +168 -0
  90. data/test/test_util/destination.rb +415 -0
  91. data/test/test_util/invoicer.rb +42 -0
  92. data/test/test_util/polling_manager.rb +299 -0
  93. data/test/test_util/transaction.rb +130 -0
  94. metadata +178 -0
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::Transaction -- xmlconv2 -- 04.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'odba'
5
+ require 'xmlconv/util/destination'
6
+ require 'xmlconv/util/mail'
7
+
8
+ module XmlConv
9
+ module Util
10
+ class Transaction
11
+ include ODBA::Persistable
12
+ ODBA_SERIALIZABLE = ['@postprocs', '@responses', '@arguments']
13
+ odba_index :invoice_ids
14
+ attr_accessor :input, :reader, :writer, :destination, :origin,
15
+ :transaction_id, :partner, :error, :postprocs,
16
+ :error_recipients, :debug_recipients, :domain,
17
+ :response, :arguments
18
+ attr_reader :output, :model, :start_time, :commit_time,
19
+ :input_model, :output_model
20
+ def initialize
21
+ @postprocs = []
22
+ end
23
+ def execute
24
+ reader_instance = Conversion.const_get(@reader)
25
+ writer_instance = Conversion.const_get(@writer)
26
+ @start_time = Time.now
27
+ input_model = reader_instance.parse(@input)
28
+ @arguments ||= []
29
+ @model = reader_instance.convert(input_model, *@arguments)
30
+ output_model = writer_instance.convert(@model, *@arguments)
31
+ @output = output_model.to_s
32
+ @destination.deliver(output_model)
33
+ @commit_time = Time.now
34
+ @output
35
+ ensure
36
+ @destination.forget_credentials!
37
+ end
38
+ def invoice_ids
39
+ @model.invoices.collect do |inv|
40
+ inv.invoice_id.last.to_s.gsub /^0+/, ''
41
+ end
42
+ end
43
+ def notify
44
+ recipients = [@debug_recipients]
45
+ subject = 'XmlConv2 - Debug-Notification'
46
+ if(@error)
47
+ recipients.push(@error_recipients)
48
+ subject = 'XmlConv2 - Error-Notification'
49
+ end
50
+ recipients.flatten!
51
+ recipients.compact!
52
+ recipients.uniq!
53
+ return if(recipients.empty?)
54
+ body = <<-EOS
55
+ Date: #{@start_time.strftime("%d.%m.%Y")}
56
+ Time: #{@start_time.strftime("%H:%M:%S")}
57
+ Status: #{status}
58
+ Error: #{@error}
59
+ Link: http://#{@domain}/de/transaction/transaction_id/#{@transaction_id}
60
+
61
+ Input:
62
+ # input start
63
+ #{@input}
64
+ # input end
65
+
66
+ Output:
67
+ # output start
68
+ #{@output}
69
+ # output end
70
+ EOS
71
+ Util::Mail.notify recipients, subject, body
72
+ end
73
+ def odba_store
74
+ @input.extend(ODBA::Persistable) if(@input)
75
+ @output.extend(ODBA::Persistable) if(@output)
76
+ super
77
+ end
78
+ def postprocess
79
+ if(@postprocs.respond_to?(:each))
80
+ @postprocs.each { |klass, *args|
81
+ next if args.empty?
82
+ args.push(self)
83
+ PostProcess.const_get(klass).send(*args)
84
+ }
85
+ end
86
+ end
87
+ def respond delivery, response
88
+ responses[delivery] = response
89
+ end
90
+ def response
91
+ reader_instance = Conversion.const_get(@reader)
92
+ if reader_instance.respond_to?(:respond)
93
+ reader_instance.respond(self, responses)
94
+ end
95
+ end
96
+ def responses
97
+ @responses ||= []
98
+ end
99
+ def status
100
+ if(@error)
101
+ :error
102
+ elsif(@model.nil? || @model.empty?)
103
+ :empty
104
+ elsif(@destination.respond_to?(:status))
105
+ @destination.status
106
+ end
107
+ end
108
+ def status=(status)
109
+ if @destination.respond_to?(:status=)
110
+ @destination.status = status
111
+ @destination.odba_store
112
+ @destination.status
113
+ end
114
+ end
115
+ def status_comparable
116
+ if(@destination.respond_to?(:status_comparable))
117
+ @destination.status_comparable
118
+ end
119
+ end
120
+ def update_status
121
+ if(@destination.respond_to?(:update_status))
122
+ @destination.update_status
123
+ end
124
+ end
125
+ def uri
126
+ @destination.uri if(@destination.respond_to?(:uri))
127
+ end
128
+ def uri_comparable
129
+ self.uri.to_s
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+ # Util::Validator -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'sbsm/validator'
5
+
6
+ module XmlConv
7
+ module Util
8
+ class Validator < SBSM::Validator
9
+ EVENTS = [
10
+ :login, :logout, :sort, :transaction, :self, :home
11
+ ]
12
+ STRINGS = [
13
+ :sortvalue,
14
+ ]
15
+ NUMERIC = [
16
+ :transaction_id, :page
17
+ ]
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Foot -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/composite'
5
+ require 'xmlconv/view/navigation'
6
+ require 'date'
7
+
8
+ module XmlConv
9
+ module View
10
+ class Foot < HtmlGrid::Composite
11
+ COMPONENTS = {
12
+ [0,0] => :copyright,
13
+ [1,0] => Navigation,
14
+ }
15
+ CSS_CLASS = 'foot composite'
16
+ LEGACY_INTERFACE = false
17
+ def copyright(model)
18
+ link = HtmlGrid::Link.new(:copyright, model, @session, self)
19
+ link.href = 'http://www.ywesee.com'
20
+ link.value = @lookandfeel.lookup(:copyright, Date.today.strftime('%Y'))
21
+ link.css_class = 'foot'
22
+ link.target = '_blank'
23
+ link
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Head -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/composite'
5
+
6
+ module XmlConv
7
+ module View
8
+ class Head < HtmlGrid::Composite
9
+ COMPONENTS = {
10
+ }
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Login -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'xmlconv/view/template'
5
+ require 'htmlgrid/form'
6
+ require 'htmlgrid/pass'
7
+
8
+ module XmlConv
9
+ module View
10
+ class LoginForm < HtmlGrid::Form
11
+ COMPONENTS = {
12
+ [0,0] => :pass,
13
+ [1,1] => :submit,
14
+ }
15
+ CSS_CLASS = 'component'
16
+ EVENT = :login
17
+ LABELS = true
18
+ SYMBOL_MAP = {
19
+ :pass => HtmlGrid::Pass,
20
+ }
21
+ end
22
+ class LoginComposite < HtmlGrid::Composite
23
+ COMPONENTS = {
24
+ [0,0] => "login_welcome",
25
+ [0,1] => LoginForm,
26
+ }
27
+ CSS_CLASS = 'composite'
28
+ CSS_MAP = {
29
+ [0,0] => 'th',
30
+ }
31
+ end
32
+ class Login < Template
33
+ CONTENT = LoginComposite
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Navigation -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/composite'
5
+ require 'xmlconv/view/navigationlink'
6
+
7
+ module XmlConv
8
+ module View
9
+ class Navigation < HtmlGrid::Composite
10
+ COMPONENTS = {}
11
+ CSS_CLASS = "navigation"
12
+ #HTML_ATTRIBUTES = {"align"=>"right"}
13
+ SYMBOL_MAP = {
14
+ :navigation_divider => HtmlGrid::Text,
15
+ }
16
+ def init
17
+ build_navigation()
18
+ super
19
+ end
20
+ def build_navigation
21
+ @lookandfeel.navigation.each_with_index { |state, idx|
22
+ evt = state.is_a?(Symbol) ? state : state.direct_event
23
+ symbol_map.store(evt, NavigationLink)
24
+ components.store([idx*2,0], evt)
25
+ components.store([idx*2-1,0], :navigation_divider) if(idx > 0)
26
+ }
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ # View::NavigationLink -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/link'
5
+
6
+ module XmlConv
7
+ module View
8
+ class NavigationLink < HtmlGrid::Link
9
+ #CSS_CLASS = "navigation"
10
+ def init
11
+ super
12
+ unless(@lookandfeel.direct_event == @name)
13
+ @attributes.store("href", @lookandfeel.event_url(@name))
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+
21
+
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Pager -- xmlconv2 -- 01.07.2004 -- ywesee@ywesee.com
3
+
4
+ require 'htmlgrid/link'
5
+ require 'htmlgrid/list'
6
+
7
+ module XmlConv
8
+ module View
9
+ class Pager < HtmlGrid::List
10
+ BACKGROUND_SUFFIX = ''
11
+ COMPONENTS = {
12
+ [0,0] => :number_link,
13
+ }
14
+ CSS_CLASS = 'pager'
15
+ CSS_HEAD_MAP = {
16
+ #[0,0] => 'pager-head',
17
+ }
18
+ CSS_MAP = {
19
+ #[0,0] => 'pager',
20
+ }
21
+ LEGACY_INTERFACE = false
22
+ OFFSET_STEP = [1,0]
23
+ SORT_DEFAULT = :to_i
24
+ SORT_HEADER = false
25
+ def init
26
+ @page = @container.model
27
+ super
28
+ end
29
+ def compose_header(offset)
30
+ @grid.add(page_number(@model), *offset)
31
+ @grid.add_style('head', *offset)
32
+ offset = resolve_offset(offset, self::class::OFFSET_STEP)
33
+ if(@page != @model.first)
34
+ link = page_link(@page.previous)
35
+ link.value = @lookandfeel.lookup(:page_back)
36
+ @grid.add(link, *offset)
37
+ end
38
+ #@grid.add_attribute('class', 'pager', *offset)
39
+ resolve_offset(offset, self::class::OFFSET_STEP)
40
+ end
41
+ def compose_footer(offset)
42
+ if(@page != @model.last)
43
+ link = page_link(@page.next)
44
+ link.value = @lookandfeel.lookup(:page_fwd)
45
+ @grid.add(link, *offset)
46
+ else
47
+ @grid.add(nil, *offset)
48
+ end
49
+ end
50
+ private
51
+ def number_link(model)
52
+ page_link(model)
53
+ end
54
+ def page_link(page)
55
+ if(page != @page)
56
+ link = HtmlGrid::Link.new(:self, page, @session, self)
57
+ link.value = page.to_s
58
+ #link.set_attribute("class", "pager")
59
+ values = {
60
+ :page => page.to_i.to_s,
61
+ }
62
+ link.href = @lookandfeel.event_url(:self, values)
63
+ link
64
+ else
65
+ page.to_s
66
+ end
67
+ end
68
+ def page_number(model)
69
+ @lookandfeel.lookup(:page_number, @page, @page.total)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Preformatted -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/value'
5
+
6
+ module XmlConv
7
+ module View
8
+ BREAK_WIDTH = 65
9
+ class Preformatted < HtmlGrid::Value
10
+ def init
11
+ super
12
+ pretty = ''
13
+ if(@value)
14
+ raw = @value.gsub(/>\s+</, "><").gsub(/\r\n?/, "\n")
15
+ begin
16
+ pretty = CGI.pretty(raw)
17
+ rescue
18
+ pretty = raw
19
+ end
20
+ wrap = ''
21
+ pretty.each_line { |line|
22
+ if(line.length < BREAK_WIDTH)
23
+ wrap << line
24
+ else
25
+ indent = line[/^ +/].to_s
26
+ indent = indent[0,indent.length % (BREAK_WIDTH / 3)]
27
+ tmpparts = line.split(/(?<=") +(?=")/)
28
+ parts = []
29
+ tmpparts.each { |part|
30
+ if(part.length > BREAK_WIDTH)
31
+ parts.concat(part.split(/ /))
32
+ else
33
+ parts.push(part)
34
+ end
35
+ }
36
+ wrapline = parts.shift
37
+ while(part = parts.shift)
38
+ if((wrapline.length + part.length) >= BREAK_WIDTH)
39
+ wrap << wrapline
40
+ wrap << "\n"
41
+ wrapline = indent.dup << (' ' * 5) << part
42
+ else
43
+ wrapline << ' ' << part
44
+ end
45
+ end
46
+ wrap << wrapline
47
+ end
48
+ }
49
+ @value = CGI.escapeHTML(wrap)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Template -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/divtemplate'
5
+ require 'xmlconv/view/foot'
6
+
7
+ module XmlConv
8
+ module View
9
+ class Template < HtmlGrid::DivTemplate
10
+ COMPONENTS = {
11
+ [0,0] => :content,
12
+ [0,1] => :foot,
13
+ }
14
+ FOOT = Foot
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Transaction -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/value'
5
+ require 'xmlconv/view/template'
6
+ require 'xmlconv/view/preformatted'
7
+
8
+ module XmlConv
9
+ module View
10
+ class TransactionComposite < HtmlGrid::Composite
11
+ COMPONENTS = {
12
+ [0,0] => 'th_input',
13
+ [1,0] => 'th_output',
14
+ [0,1] => :input,
15
+ [1,1] => :output,
16
+ [0,2] => 'th_error',
17
+ [0,3] => :error_string,
18
+ }
19
+ CSS_CLASS = 'composite'
20
+ CSS_MAP = {
21
+ [0,0,2] => 'th',
22
+ [0,1,2] => 'helfti preformatted',
23
+ [0,2] => 'th',
24
+ [0,3] => 'list preformatted bg',
25
+ }
26
+ COLSPAN_MAP = {
27
+ [0,2] => 2,
28
+ [0,3] => 2,
29
+ }
30
+ DEFAULT_CLASS = View::Preformatted
31
+ LEGACY_INTERFACE = false
32
+ def error_string(model)
33
+ if(err = model.error)
34
+ [err.class, err.message, err.backtrace].join("\n")
35
+ end
36
+ end
37
+ end
38
+ class Transaction < Template
39
+ CONTENT = TransactionComposite
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+ # View::Transactions -- xmlconv2 -- 09.06.2004 -- hwyss@ywesee.com
3
+
4
+ require 'htmlgrid/list'
5
+ require 'htmlgrid/value'
6
+ require 'xmlconv/view/template'
7
+ require 'xmlconv/view/pager'
8
+
9
+ module XmlConv
10
+ module View
11
+ class TransactionsList < HtmlGrid::List
12
+ BACKGROUND_SUFFIX = ' bg'
13
+ COMPONENTS = {
14
+ [0,0] => :transaction_id,
15
+ [1,0] => :origin,
16
+ [2,0] => :commit_time,
17
+ [3,0] => :uri_comparable,
18
+ [4,0] => :status_comparable,
19
+ }
20
+ CSS_CLASS = 'composite'
21
+ CSS_HEAD_MAP = {
22
+ [0,0] => 'right',
23
+ }
24
+ CSS_MAP = {
25
+ [0,0] => 'list right',
26
+ [1,0,4] => 'list',
27
+ }
28
+ DEFAULT_CLASS = HtmlGrid::Value
29
+ LEGACY_INTERFACE = false
30
+ SORT_DEFAULT = nil #:commit_time
31
+ SORT_REVERSE = false
32
+ def commit_time(model)
33
+ time_format(model.commit_time || model.start_time)
34
+ end
35
+ def origin(model)
36
+ uri_fmt(model.origin)
37
+ end
38
+ def uri_comparable(model)
39
+ uri_fmt(model.uri)
40
+ end
41
+ def uri_fmt(uri)
42
+ uri = uri.to_s
43
+ if((i1 = uri.index(/([^\/])\/[^\/]/, 1)) \
44
+ && (i2 = uri.rindex(/(\/[^\/]+){3}/)) \
45
+ && (i2 > i1))
46
+ uri[0..(i1.next)] << '...' << uri[i2..-1]
47
+ else
48
+ uri
49
+ end
50
+ end
51
+ def status_comparable(model)
52
+ model.update_status
53
+ status = model.status
54
+ @lookandfeel.lookup("status_#{status}") or status.to_s
55
+ end
56
+ def time_format(a_time)
57
+ if(a_time.respond_to?(:strftime))
58
+ a_time.strftime("%d.%m.%Y %H:%M:%S")
59
+ end
60
+ end
61
+ def transaction_id(model)
62
+ link = HtmlGrid::Link.new(:transaction_id, model, @session, self)
63
+ args = {
64
+ 'transaction_id' => model.transaction_id,
65
+ }
66
+ link.href = @lookandfeel.event_url(:transaction, args)
67
+ link.value = model.transaction_id
68
+ link
69
+ end
70
+ end
71
+ class TransactionsComposite < HtmlGrid::Composite
72
+ COMPONENTS = {
73
+ [0,0] => :pager,
74
+ [0,1] => :transactions,
75
+ }
76
+ CSS_CLASS = 'composite'
77
+ LEGACY_INTERFACE = false
78
+ def pager(model)
79
+ Pager.new(model.pages, @session, self)
80
+ end
81
+ def transactions(page)
82
+ TransactionsList.new(page.model, @session, self)
83
+ end
84
+ end
85
+ class Transactions < Template
86
+ CONTENT = TransactionsComposite
87
+ #CONTENT = TransactionsList
88
+ end
89
+ end
90
+ end
data/lib/xmlconv.rb ADDED
@@ -0,0 +1,3 @@
1
+ class Version
2
+ VERSION = '1.0.0'
3
+ end
data/test/config.rb ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # Config -- xmlconv2 -- 21.08.2006 -- hwyss@ywesee.com
3
+
4
+ require 'ostruct'
5
+
6
+ module XmlConv
7
+ CONFIG = OpenStruct.new
8
+ CONFIG.grammar_dir = File.expand_path('../data/grammar',
9
+ File.dirname(__FILE__))
10
+ CONFIG.polling_file = File.expand_path('data/polling.yaml',
11
+ File.dirname(__FILE__))
12
+ end