omf_web 1.2.3 → 1.2.4

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.
data/lib/irods4r/file.rb CHANGED
@@ -32,6 +32,8 @@ module IRODS4r
32
32
  # WARN: This will overwrite any previous content
33
33
  #
34
34
  def write(content)
35
+ dir_name = ::File.dirname(@path)
36
+ ICommands.mkpath(dir_name) unless IRODS4r.exists?(dir_name)
35
37
  ICommands.write(@path, content, @ticket)
36
38
  end
37
39
 
@@ -41,6 +41,11 @@ module IRODS4r
41
41
  f.unlink
42
42
  end
43
43
 
44
+ def self.mkpath(dirname)
45
+ cmd_out = `imkdir -p #{dirname} 2>&1`
46
+ raise ICommandException.new(cmd_out) unless $?.exitstatus == 0
47
+ end
48
+
44
49
  def self.exist?(path, ticket = nil)
45
50
  `ils #{"-t #{ticket}" if ticket} #{path}`
46
51
  $?.exitstatus == 0
data/lib/irods4r.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  module IRODS4r
4
4
 
5
- class IRODS4rException < Exception; end
5
+ class IRODS4rException < StandardError; end
6
6
  class NotFoundException < IRODS4rException; end
7
7
  class NoDirectoryException < IRODS4rException; end
8
8
 
@@ -104,7 +104,9 @@ module OMF::Web
104
104
  def write(content_descr, content, message)
105
105
  path = _get_path(content_descr)
106
106
  Dir.chdir(@top_dir) do
107
- unless File.writable?(path) || File.writable?(File.dirname(path))
107
+ d_name = File.dirname(path)
108
+ FileUtils.mkpath(d_name) unless File.exist?(d_name)
109
+ unless File.writable?(path) || File.writable?(d_name)
108
110
  raise "Cannot write to file '#{path}'"
109
111
  end
110
112
  f = File.open(path, 'w')
@@ -130,7 +130,7 @@ module OMF::Web
130
130
  # Return a URL for a path in this repo
131
131
  #
132
132
  def get_url_for_path(path)
133
- puts "PATH>>>>> '#{path}:#{path.class}'-'#{@top_dir}:#{@top_dir.class}'"
133
+ # puts "PATH>>>>> '#{path}:#{path.class}'-'#{@top_dir}:#{@top_dir.class}'"
134
134
  if m = path.match("#{@top_dir}(.*)")
135
135
  path = m[1]
136
136
  end
@@ -17,6 +17,7 @@ module OMF::Web
17
17
  :js => 'text/javascript',
18
18
  :md => 'text/markup',
19
19
  :rb => 'text/ruby',
20
+ :oedl => 'text/ruby',
20
21
  :r => 'text/r',
21
22
  :svg => 'text/svg',
22
23
  :txt => 'text'
@@ -63,6 +63,20 @@ module OMF::Web
63
63
  dsp
64
64
  end
65
65
 
66
+ def self.validate_ds_description(ds_descr)
67
+ debug "Validate datasource - #{ds_descr}"
68
+ unless ds_descr.is_a? Hash
69
+ raise "Expected Hash, but got '#{ds_descr.class}::#{ds_descr.inspect}'"
70
+ end
71
+ return true if ds_descr[:data_url] # We can fetch the data in the browser if necessary
72
+ unless ds_name = ds_descr[:id] || ds_descr[:stream] || ds_descr[:name]
73
+ raise "Missing 'name' attribute in datasource description. (#{ds_descr.inspect})"
74
+ end
75
+ ds_name = ds_name.to_sym
76
+ ds = @@datasources[ds_name]
77
+ ds != nil
78
+ end
79
+
66
80
  # Return proxies for 'ds_name'. Note, there can be more then
67
81
  # one proxy be needed for a datasource, such as a network which
68
82
  # has one ds for the nodes and one for the links
@@ -124,10 +124,12 @@ module OMF::Web::Theme
124
124
  else
125
125
  e = render_externals << render_additional_headers << render_data_sources
126
126
  r = Erector.inline do
127
- instruct
127
+ #instruct
128
+ text! '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
128
129
  html do
129
130
  head do
130
131
  title page_title || "OMF WEB"
132
+ meta 'http-equiv' => "content-type", :content => "text/html; charset=UTF8"
131
133
  #<link rel="shortcut icon" href="/resource/theme/@theme/img/favicon.ico">
132
134
  #<link rel="apple-touch-icon" href="/resource/theme/@theme/img/apple-touch-icon.png">
133
135
  text! e.join("\n")
@@ -140,5 +142,6 @@ module OMF::Web::Theme
140
142
  r.to_html(opts)
141
143
  end
142
144
  end
145
+
143
146
  end # class AbstractPage
144
147
  end # OMF::Web::Theme
@@ -50,7 +50,14 @@ module Thin
50
50
  public :debug
51
51
 
52
52
  # Log an error backtrace if debugging is activated
53
- def log_error(e = $!)
53
+ #
54
+ # Thin 1.3 uses one argument e
55
+ # Thin 1.6 uses two argument message, e
56
+ #
57
+ # This patch will now support both cases
58
+ def log_error(*args)
59
+ e = args.last
60
+ e ||= $!
54
61
  (@logger ||= OMF::Base::LObject.new(self.class)).error(e)
55
62
  end
56
63
  module_function :log_error
@@ -1,7 +1,7 @@
1
1
 
2
2
  module OMF
3
3
  module Web
4
- VERSION = '1.2.3'
4
+ VERSION = '1.2.4'
5
5
  # Used for finding the example directory
6
6
  TOP_DIR = File.dirname(File.dirname(File.dirname(__FILE__)))
7
7
  end
@@ -1,4 +1,5 @@
1
1
  require 'omf-web/widget/abstract_widget'
2
+ require 'omf-web/data_source_proxy'
2
3
 
3
4
  module OMF::Web::Widget
4
5
 
@@ -46,7 +47,11 @@ module OMF::Web::Widget
46
47
  ds_descr = {:name => ds_descr}
47
48
  end
48
49
  ds_descr[:alias] = "#{name}_#{self.object_id}"
49
- {:stream => ds_descr, :name => name}
50
+ #{:stream => ds_descr, :name => name}
51
+ unless OMF::Web::DataSourceProxy.validate_ds_description(ds_descr)
52
+ raise "Unknown data source requested for data widget - #{ds_descr}"
53
+ end
54
+ ds_descr
50
55
  end
51
56
  #puts "DTA_WIDGTE>>> #{opts[:data_sources].inspect}"
52
57
  end
@@ -30,164 +30,164 @@
30
30
  module MaRuKu
31
31
  module Helpers
32
32
 
33
- # if the first is a md_ial, it is used as such
34
- def md_el(node_type, children=[], meta={}, al=nil)
35
- if (e=children.first).kind_of?(MDElement) and
36
- e.node_type == :ial then
37
- if al
38
- al += e.ial
39
- else
40
- al = e.ial
41
- end
42
- children.shift
43
- end
44
- e = MDElement.new(node_type, children, meta, al)
45
- e.doc = @doc
46
- return e
47
- end
48
-
49
- def md_header(level, children, al=nil, line_no = -1)
50
- md_el(:header, children, {:level => level, :line_no => line_no}, al)
51
- end
52
-
53
- # Inline code
54
- def md_code(code, al=nil)
55
- md_el(:inline_code, [], {:raw_code => code}, al)
56
- end
57
-
58
- # Code block
59
- def md_codeblock(source, al=nil)
60
- md_el(:code, [], {:raw_code => source}, al)
61
- end
62
-
63
- def md_quote(children, al=nil)
64
- md_el(:quote, children, {}, al)
65
- end
66
-
67
- def md_li(children, want_my_par, al=nil)
68
- md_el(:li, children, {:want_my_paragraph=>want_my_par}, al)
69
- end
70
-
71
- def md_footnote(footnote_id, children, al=nil)
72
- md_el(:footnote, children, {:footnote_id=>footnote_id}, al)
73
- end
74
-
75
- def md_abbr_def(abbr, text, al=nil)
76
- md_el(:abbr_def, [], {:abbr=>abbr, :text=>text}, al)
77
- end
78
-
79
- def md_abbr(abbr, title)
80
- md_el(:abbr, [abbr], {:title=>title})
81
- end
82
-
83
- def md_html(raw_html, al=nil)
84
- e = md_el(:raw_html, [], {:raw_html=>raw_html})
85
- begin
86
- # remove newlines and whitespace at begin
87
- # end end of string, or else REXML gets confused
88
- raw_html = raw_html.gsub(/\A\s*</,'<').
89
- gsub(/>[\s\n]*\Z/,'>')
90
-
91
- raw_html = "<marukuwrap>#{raw_html}</marukuwrap>"
92
- e.instance_variable_set :@parsed_html,
93
- REXML::Document.new(raw_html)
94
- rescue REXML::ParseException => ex
95
- e.instance_variable_set :@parsed_html, nil
96
- maruku_recover "REXML cannot parse this block of HTML/XML:\n"+
97
- add_tabs(raw_html,1,'|') + "\n"+ex.inspect
33
+ # if the first is a md_ial, it is used as such
34
+ def md_el(node_type, children=[], meta={}, al=nil)
35
+ if (e=children.first).kind_of?(MDElement) and
36
+ e.node_type == :ial then
37
+ if al
38
+ al += e.ial
39
+ else
40
+ al = e.ial
41
+ end
42
+ children.shift
43
+ end
44
+ e = MDElement.new(node_type, children, meta, al)
45
+ e.doc = @doc
46
+ return e
47
+ end
48
+
49
+ def md_header(level, children, al=nil, line_no = -1)
50
+ md_el(:header, children, {:level => level, :line_no => line_no}, al)
51
+ end
52
+
53
+ # Inline code
54
+ def md_code(code, al=nil)
55
+ md_el(:inline_code, [], {:raw_code => code}, al)
56
+ end
57
+
58
+ # Code block
59
+ def md_codeblock(source, al=nil)
60
+ md_el(:code, [], {:raw_code => source}, al)
61
+ end
62
+
63
+ def md_quote(children, al=nil)
64
+ md_el(:quote, children, {}, al)
65
+ end
66
+
67
+ def md_li(children, want_my_par, al=nil)
68
+ md_el(:li, children, {:want_my_paragraph=>want_my_par}, al)
69
+ end
70
+
71
+ def md_footnote(footnote_id, children, al=nil)
72
+ md_el(:footnote, children, {:footnote_id=>footnote_id}, al)
73
+ end
74
+
75
+ def md_abbr_def(abbr, text, al=nil)
76
+ md_el(:abbr_def, [], {:abbr=>abbr, :text=>text}, al)
77
+ end
78
+
79
+ def md_abbr(abbr, title)
80
+ md_el(:abbr, [abbr], {:title=>title})
81
+ end
82
+
83
+ def md_html(raw_html, al=nil)
84
+ e = md_el(:raw_html, [], {:raw_html=>raw_html})
85
+ begin
86
+ # remove newlines and whitespace at begin
87
+ # end end of string, or else REXML gets confused
88
+ raw_html = raw_html.gsub(/\A\s*</,'<').
89
+ gsub(/>[\s\n]*\Z/,'>')
90
+
91
+ raw_html = "<marukuwrap>#{raw_html}</marukuwrap>"
92
+ e.instance_variable_set :@parsed_html,
93
+ REXML::Document.new(raw_html)
94
+ rescue REXML::ParseException => ex
95
+ e.instance_variable_set :@parsed_html, nil
96
+ maruku_recover "REXML cannot parse this block of HTML/XML:\n"+
97
+ add_tabs(raw_html,1,'|') + "\n"+ex.inspect
98
98
  # " #{raw_html.inspect}\n\n"+ex.inspect
99
- end
100
- e
101
- end
99
+ end
100
+ e
101
+ end
102
102
 
103
- def md_link(children, ref_id, al=nil)
103
+ def md_link(children, ref_id, al=nil)
104
104
  #puts "LINK>>> '#{ref_id}'"
105
- md_el(:link, children, {:ref_id=>ref_id.downcase}, al)
106
- end
107
-
108
- def md_im_link(children, url, title=nil, al=nil)
109
- #puts "IM_LINK>>> '#{url}'"
110
- md_el(:im_link, children, {:url=>url,:title=>title}, al)
111
- end
112
-
113
- def md_image(children, ref_id, al=nil)
114
- md_el(:image, children, {:ref_id=>ref_id}, al)
115
- end
116
-
117
- def md_im_image(children, url, title=nil, al=nil)
118
- md_el(:im_image, children, {:url=>url,:title=>title},al)
119
- end
120
-
121
- def md_em(children, al=nil)
122
- md_el(:emphasis, [children].flatten, {}, al)
123
- end
124
-
125
- def md_br()
126
- md_el(:linebreak, [], {}, nil)
127
- end
128
-
129
- def md_hrule()
130
- md_el(:hrule, [], {}, nil)
131
- end
132
-
133
- def md_strong(children, al=nil)
134
- md_el(:strong, [children].flatten, {}, al)
135
- end
136
-
137
- def md_emstrong(children, al=nil)
138
- md_strong(md_em(children), al)
139
- end
140
-
141
- # <http://www.example.com/>
142
- def md_url(url, al=nil)
143
- #puts "URL>>> '#{url}'"
144
- md_el(:immediate_link, [], {:url=>url}, al)
145
- end
146
-
147
- # <andrea@rubyforge.org>
148
- # <mailto:andrea@rubyforge.org>
149
- def md_email(email, al=nil)
150
- md_el(:email_address, [], {:email=>email}, al)
151
- end
152
-
153
- def md_entity(entity_name, al=nil)
154
- md_el(:entity, [], {:entity_name=>entity_name}, al)
155
- end
156
-
157
- # Markdown extra
158
- def md_foot_ref(ref_id, al=nil)
159
- md_el(:footnote_reference, [], {:footnote_id=>ref_id}, al)
160
- end
161
-
162
- def md_par(children, al=nil, line_no = -1)
163
- #md_el(:paragraph, children, meta={}, al)
164
- md_el(:paragraph, children, {:line_no => line_no}, al)
165
- end
166
-
167
- # [1]: http://url [properties]
168
- def md_ref_def(ref_id, url, title=nil, meta={}, al=nil)
169
- meta[:url] = url
170
- meta[:ref_id] = ref_id
171
- meta[:title] = title if title
172
- md_el(:ref_definition, [], meta, al)
173
- end
174
-
175
- # inline attribute list
176
- def md_ial(al)
177
- al = Maruku::AttributeList.new(al) if
178
- not al.kind_of?Maruku::AttributeList
179
- md_el(:ial, [], {:ial=>al})
180
- end
181
-
182
- # Attribute list definition
183
- def md_ald(id, al)
184
- md_el(:ald, [], {:ald_id=>id,:ald=>al})
185
- end
186
-
187
- # Server directive <?target code... ?>
188
- def md_xml_instr(target, code)
189
- md_el(:xml_instr, [], {:target=>target, :code=>code})
190
- end
105
+ md_el(:link, children, {:ref_id=>ref_id.downcase}, al)
106
+ end
107
+
108
+ def md_im_link(children, url, title=nil, al=nil)
109
+ #puts "IM_LINK>>> '#{url}'"
110
+ md_el(:im_link, children, {:url=>url,:title=>title}, al)
111
+ end
112
+
113
+ def md_image(children, ref_id, al=nil)
114
+ md_el(:image, children, {:ref_id=>ref_id}, al)
115
+ end
116
+
117
+ def md_im_image(children, url, title=nil, al=nil)
118
+ md_el(:im_image, children, {:url=>url,:title=>title},al)
119
+ end
120
+
121
+ def md_em(children, al=nil)
122
+ md_el(:emphasis, [children].flatten, {}, al)
123
+ end
124
+
125
+ def md_br()
126
+ md_el(:linebreak, [], {}, nil)
127
+ end
128
+
129
+ def md_hrule()
130
+ md_el(:hrule, [], {}, nil)
131
+ end
132
+
133
+ def md_strong(children, al=nil)
134
+ md_el(:strong, [children].flatten, {}, al)
135
+ end
136
+
137
+ def md_emstrong(children, al=nil)
138
+ md_strong(md_em(children), al)
139
+ end
140
+
141
+ # <http://www.example.com/>
142
+ def md_url(url, al=nil)
143
+ #puts "URL>>> '#{url}'"
144
+ md_el(:immediate_link, [], {:url=>url}, al)
145
+ end
146
+
147
+ # <andrea@rubyforge.org>
148
+ # <mailto:andrea@rubyforge.org>
149
+ def md_email(email, al=nil)
150
+ md_el(:email_address, [], {:email=>email}, al)
151
+ end
152
+
153
+ def md_entity(entity_name, al=nil)
154
+ md_el(:entity, [], {:entity_name=>entity_name}, al)
155
+ end
156
+
157
+ # Markdown extra
158
+ def md_foot_ref(ref_id, al=nil)
159
+ md_el(:footnote_reference, [], {:footnote_id=>ref_id}, al)
160
+ end
161
+
162
+ def md_par(children, al=nil, line_no = -1)
163
+ #md_el(:paragraph, children, meta={}, al)
164
+ md_el(:paragraph, children, {:line_no => line_no}, al)
165
+ end
166
+
167
+ # [1]: http://url [properties]
168
+ def md_ref_def(ref_id, url, title=nil, meta={}, al=nil)
169
+ meta[:url] = url
170
+ meta[:ref_id] = ref_id
171
+ meta[:title] = title if title
172
+ md_el(:ref_definition, [], meta, al)
173
+ end
174
+
175
+ # inline attribute list
176
+ def md_ial(al)
177
+ al = Maruku::AttributeList.new(al) if
178
+ not al.kind_of?Maruku::AttributeList
179
+ md_el(:ial, [], {:ial=>al})
180
+ end
181
+
182
+ # Attribute list definition
183
+ def md_ald(id, al)
184
+ md_el(:ald, [], {:ald_id=>id,:ald=>al})
185
+ end
186
+
187
+ # Server directive <?target code... ?>
188
+ def md_xml_instr(target, code)
189
+ md_el(:xml_instr, [], {:target=>target, :code=>code})
190
+ end
191
191
 
192
192
  end
193
193
  end
@@ -195,62 +195,62 @@ end
195
195
  module MaRuKu
196
196
 
197
197
  class MDElement
198
- # outputs abbreviated form (this should be eval()uable to get the document)
199
- def inspect2
200
- s =
201
- case @node_type
202
- when :paragraph
203
- "md_par(%s)" % children_inspect
204
- when :footnote_reference
205
- "md_foot_ref(%s)" % self.footnote_id.inspect
206
- when :entity
207
- "md_entity(%s)" % self.entity_name.inspect
208
- when :email_address
209
- "md_email(%s)" % self.email.inspect
210
- when :inline_code
211
- "md_code(%s)" % self.raw_code.inspect
212
- when :raw_html
213
- "md_html(%s)" % self.raw_html.inspect
214
- when :emphasis
215
- "md_em(%s)" % children_inspect
216
- when :strong
217
- "md_strong(%s)" % children_inspect
218
- when :immediate_link
219
- "md_url(%s)" % self.url.inspect
220
- when :image
221
- "md_image(%s, %s)" % [
222
- children_inspect,
223
- self.ref_id.inspect]
224
- when :im_image
225
- "md_im_image(%s, %s, %s)" % [
226
- children_inspect,
227
- self.url.inspect,
228
- self.title.inspect]
229
- when :link
230
- "md_link(%s,%s)" % [
231
- children_inspect, self.ref_id.inspect]
232
- when :im_link
233
- "md_im_link(%s, %s, %s)" % [
234
- children_inspect,
235
- self.url.inspect,
236
- self.title.inspect,
237
- ]
238
- when :ref_definition
239
- "md_ref_def(%s, %s, %s)" % [
240
- self.ref_id.inspect,
241
- self.url.inspect,
242
- self.title.inspect
243
- ]
244
- when :ial
245
- "md_ial(%s)" % self.ial.inspect
246
- else
247
- return nil
248
- end
249
- if @al and not @al.empty? then
250
- s = s.chop + ", #{@al.inspect})"
251
- end
252
- s
253
- end
198
+ # outputs abbreviated form (this should be eval()uable to get the document)
199
+ def inspect2
200
+ s =
201
+ case @node_type
202
+ when :paragraph
203
+ "md_par(%s)" % children_inspect
204
+ when :footnote_reference
205
+ "md_foot_ref(%s)" % self.footnote_id.inspect
206
+ when :entity
207
+ "md_entity(%s)" % self.entity_name.inspect
208
+ when :email_address
209
+ "md_email(%s)" % self.email.inspect
210
+ when :inline_code
211
+ "md_code(%s)" % self.raw_code.inspect
212
+ when :raw_html
213
+ "md_html(%s)" % self.raw_html.inspect
214
+ when :emphasis
215
+ "md_em(%s)" % children_inspect
216
+ when :strong
217
+ "md_strong(%s)" % children_inspect
218
+ when :immediate_link
219
+ "md_url(%s)" % self.url.inspect
220
+ when :image
221
+ "md_image(%s, %s)" % [
222
+ children_inspect,
223
+ self.ref_id.inspect]
224
+ when :im_image
225
+ "md_im_image(%s, %s, %s)" % [
226
+ children_inspect,
227
+ self.url.inspect,
228
+ self.title.inspect]
229
+ when :link
230
+ "md_link(%s,%s)" % [
231
+ children_inspect, self.ref_id.inspect]
232
+ when :im_link
233
+ "md_im_link(%s, %s, %s)" % [
234
+ children_inspect,
235
+ self.url.inspect,
236
+ self.title.inspect,
237
+ ]
238
+ when :ref_definition
239
+ "md_ref_def(%s, %s, %s)" % [
240
+ self.ref_id.inspect,
241
+ self.url.inspect,
242
+ self.title.inspect
243
+ ]
244
+ when :ial
245
+ "md_ial(%s)" % self.ial.inspect
246
+ else
247
+ return nil
248
+ end
249
+ if @al and not @al.empty? then
250
+ s = s.chop + ", #{@al.inspect})"
251
+ end
252
+ s
253
+ end
254
254
 
255
255
  end
256
256