dryml 1.3.0.pre31 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/dryml.gemspec +2 -1
- data/ext/mkrf_conf.rb +9 -0
- data/lib/dryml/dryml_builder.rb +43 -2
- data/lib/dryml/dryml_generator.rb +1 -0
- data/lib/dryml/part_context.rb +1 -1
- data/lib/dryml/taglib.rb +33 -22
- data/lib/dryml/template.rb +16 -14
- data/lib/dryml/template_environment.rb +20 -12
- data/lib/dryml.rb +6 -3
- data/taglibs/core.dryml +15 -5
- metadata +9 -8
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.0
|
1
|
+
1.3.0
|
data/dryml.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = "The Don't Repeat Yourself Markup Language"
|
12
12
|
s.description = "The Don't Repeat Yourself Markup Language"
|
13
13
|
|
14
|
-
s.add_runtime_dependency('actionpack', ["
|
14
|
+
s.add_runtime_dependency('actionpack', ["~> 3.0.0"])
|
15
15
|
s.add_runtime_dependency('hobo_support', ["= #{version}"])
|
16
16
|
s.add_development_dependency('rubydoctest', [">= 0"])
|
17
17
|
|
@@ -25,4 +25,5 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.rdoc_options = ["--charset=UTF-8"]
|
26
26
|
s.require_paths = ["lib"]
|
27
27
|
|
28
|
+
s.extensions = 'ext/mkrf_conf.rb'
|
28
29
|
end
|
data/ext/mkrf_conf.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
# the whole reason this file exists: to return an error if openssl
|
4
|
+
# isn't installed.
|
5
|
+
require 'openssl'
|
6
|
+
|
7
|
+
f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w") # create dummy rakefile to indicate success
|
8
|
+
f.write("task :default\n")
|
9
|
+
f.close
|
data/lib/dryml/dryml_builder.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'erubis'
|
2
|
+
|
1
3
|
module Dryml
|
2
4
|
|
3
5
|
class DRYMLBuilder
|
@@ -58,10 +60,49 @@ module Dryml
|
|
58
60
|
end
|
59
61
|
|
60
62
|
|
63
|
+
class Erubis < ::Erubis::Eruby
|
64
|
+
def add_preamble(src)
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
def add_text(src, text)
|
69
|
+
return if text.empty?
|
70
|
+
src << "self.output_buffer.safe_concat('" << escape_text(text) << "');"
|
71
|
+
end
|
72
|
+
|
73
|
+
BLOCK_EXPR = /\s+(do|\{)(\s*\|[^|]*\|)?\s*\Z/
|
74
|
+
|
75
|
+
def add_expr_literal(src, code)
|
76
|
+
if code =~ BLOCK_EXPR
|
77
|
+
src << 'self.output_buffer.append= ' << code << ";\nself.output_buffer;"
|
78
|
+
else
|
79
|
+
src << 'self.output_buffer.append= (' << code << ");\nself.output_buffer;"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def add_stmt(src, code)
|
84
|
+
# skip fallback code - it utterly destroys DRYML-generated ERB
|
85
|
+
super
|
86
|
+
end
|
87
|
+
|
88
|
+
def add_expr_escaped(src, code)
|
89
|
+
if code =~ BLOCK_EXPR
|
90
|
+
src << "self.output_buffer.safe_append= " << code << ";\nself.output_buffer;"
|
91
|
+
else
|
92
|
+
src << "self.output_buffer.safe_concat((" << code << ").to_s);"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def add_postamble(src)
|
97
|
+
# NOTE: we can't just add a 'self.output_buffer' here because this parser
|
98
|
+
# is used to compile taglibs which don't HAVE one
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
61
102
|
def erb_process(erb_src)
|
62
103
|
trim_mode = ActionView::TemplateHandlers::ERB.erb_trim_mode
|
63
|
-
erb =
|
64
|
-
res = erb.src
|
104
|
+
erb = Erubis.new(erb_src, :trim_mode => trim_mode)
|
105
|
+
res = erb.src
|
65
106
|
if res.respond_to? :force_encoding
|
66
107
|
res.force_encoding(erb_src.encoding)
|
67
108
|
end
|
data/lib/dryml/part_context.rb
CHANGED
data/lib/dryml/taglib.rb
CHANGED
@@ -24,29 +24,40 @@
|
|
24
24
|
|
25
25
|
private
|
26
26
|
|
27
|
+
# Requirements for hobo-plugin for loading a taglib when the plugin is loaded as a gem:
|
28
|
+
# - the plugin must define the <gem_name>.camelize.constantize.root() method
|
29
|
+
# - the root() method must return a Pathname object (like Hobo.root, Dryml.root, Rails.root, etc.)
|
30
|
+
# - the taglibs must be available in the 'taglibs' dir in the gem root
|
31
|
+
# You can include the taglib with <include gem='gem_name'/> if the taglib name has the same gem name.
|
32
|
+
# If the plugin defines different taglibs you must also specify the src attribute of the taglib that you want
|
33
|
+
# to include: <include gem='gem_name' src='taglib_name'/>'
|
34
|
+
|
27
35
|
def taglib_filename(options)
|
28
|
-
plugin
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
36
|
+
plugin = options[:plugin]
|
37
|
+
gem = options[:gem]
|
38
|
+
app_root = Object.const_defined?(:Rails) ? Rails.root : Pathname.new(File.expand_path('.'))
|
39
|
+
taglibs_path = case
|
40
|
+
when plugin == 'dryml'
|
41
|
+
Dryml.root.join 'taglibs'
|
42
|
+
when plugin == 'hobo', gem == 'hobo'
|
43
|
+
Hobo.root.join 'lib/hobo/rapid/taglibs'
|
44
|
+
when !plugin.blank?
|
45
|
+
app_root.join 'vendor/plugins', plugin, 'taglibs'
|
46
|
+
when !gem.blank?
|
47
|
+
gem.tr('-','_').camelize.constantize.root.join 'taglibs'
|
48
|
+
when options[:src] =~ /\//
|
49
|
+
app_root.join 'app/views'
|
50
|
+
when options[:template_dir] =~ /^#{Hobo.root}/
|
51
|
+
Pathname.new(options[:template_dir])
|
52
|
+
when options[:absolute_template_path]
|
53
|
+
Pathname.new(options[:absolute_template_path])
|
54
|
+
else
|
55
|
+
app_root.join options[:template_dir].gsub(/^\//, '') # remove leading / if there is one
|
56
|
+
end
|
57
|
+
src = options[:src] || gem || plugin
|
58
|
+
taglib_file = taglibs_path.join "#{src}.dryml"
|
59
|
+
raise DrymlException, "No such taglib: #{src} #{options.inspect} #{taglib_file}" unless taglib_file.exist?
|
60
|
+
taglib_file.to_s
|
50
61
|
end
|
51
62
|
|
52
63
|
end
|
data/lib/dryml/template.rb
CHANGED
@@ -190,7 +190,7 @@ module Dryml
|
|
190
190
|
require_toplevel(el)
|
191
191
|
require_attribute(el, "as", /^#{DRYML_NAME}$/, true)
|
192
192
|
options = {}
|
193
|
-
%w(src module plugin as).each do |attr|
|
193
|
+
%w(src module plugin gem as).each do |attr|
|
194
194
|
options[attr.to_sym] = el.attributes[attr] if el.attributes[attr]
|
195
195
|
end
|
196
196
|
@builder.add_build_instruction(:include, options)
|
@@ -251,7 +251,11 @@ module Dryml
|
|
251
251
|
_tag_context(attributes) do
|
252
252
|
attributes.delete :with
|
253
253
|
attributes.delete :field
|
254
|
-
|
254
|
+
if for_klass = parse_for_type(attributes)
|
255
|
+
call_polymorphic_tag('#{name}', for_klass, attributes, parameters) { #{name}__base(attributes.except, parameters) }
|
256
|
+
else
|
257
|
+
call_polymorphic_tag('#{name}', attributes, parameters) { #{name}__base(attributes.except, parameters) }
|
258
|
+
end
|
255
259
|
end
|
256
260
|
end
|
257
261
|
)
|
@@ -398,17 +402,17 @@ module Dryml
|
|
398
402
|
"<% output_buffer; end"
|
399
403
|
end
|
400
404
|
|
401
|
-
|
402
405
|
def wrap_source_with_metadata(content, kind, name, *args)
|
403
406
|
if (!include_source_metadata) || name.in?(NO_METADATA_TAGS)
|
404
407
|
content
|
405
408
|
else
|
406
409
|
metadata = [kind, name] + args + [@template_path]
|
407
|
-
"<!--[DRYML|#{metadata * '|'}[-->" +
|
410
|
+
"<% safe_concat(%(<!--[DRYML|#{metadata * '|'}[-->)) %>" +
|
411
|
+
content +
|
412
|
+
"<% safe_concat(%(<!--]DRYML]-->)) %>"
|
408
413
|
end
|
409
414
|
end
|
410
415
|
|
411
|
-
|
412
416
|
def wrap_tag_method_body_with_metadata(content)
|
413
417
|
name = @def_element.attributes['tag']
|
414
418
|
for_ = @def_element.attributes['for']
|
@@ -722,14 +726,14 @@ module Dryml
|
|
722
726
|
def append_parameter_tag_hash_item(name, el, metadata_name)
|
723
727
|
":#{ruby_name name} => proc { [{}, { :default => proc { |#{param_content_local_name(name)}| new_context { %>" +
|
724
728
|
param_content_element(name) + children_to_erb(el) +
|
725
|
-
"<% } } } ] }"
|
729
|
+
"<% ; output_buffer } } } ] }"
|
726
730
|
end
|
727
731
|
|
728
732
|
|
729
733
|
def prepend_parameter_tag_hash_item(name, el, metadata_name)
|
730
734
|
":#{ruby_name name} => proc { [{}, { :default => proc { |#{param_content_local_name(name)}| new_context { %>" +
|
731
735
|
children_to_erb(el) + param_content_element(name) +
|
732
|
-
"<% } } } ] }"
|
736
|
+
"<% ; output_buffer } } } ] }"
|
733
737
|
end
|
734
738
|
|
735
739
|
|
@@ -737,7 +741,7 @@ module Dryml
|
|
737
741
|
content = children_to_erb(el)
|
738
742
|
content = wrap_source_with_metadata(content, "param", containing_param_name,
|
739
743
|
element_line_num(el)) if containing_param_name
|
740
|
-
"proc { |#{param_content_local_name(el.dryml_name)}| new_context { %>#{content}<% } #{tag_newlines(el)}}"
|
744
|
+
"proc { |#{param_content_local_name(el.dryml_name)}| new_context { %>#{content}<% ; output_buffer } #{tag_newlines(el)}}"
|
741
745
|
end
|
742
746
|
|
743
747
|
|
@@ -751,8 +755,8 @@ module Dryml
|
|
751
755
|
end
|
752
756
|
|
753
757
|
|
754
|
-
def param_proc(el,
|
755
|
-
metadata_name = "#{
|
758
|
+
def param_proc(el, metadata_name_suffix)
|
759
|
+
metadata_name = "#{el.name} < #{metadata_name_suffix}"
|
756
760
|
|
757
761
|
nl = tag_newlines(el)
|
758
762
|
|
@@ -785,7 +789,7 @@ module Dryml
|
|
785
789
|
def replace_parameter_proc(el, metadata_name, content=nil)
|
786
790
|
content ||= wrap_replace_parameter(el, metadata_name)
|
787
791
|
param_name = el.dryml_name.sub(/^(before|after|append|prepend)-/, "")
|
788
|
-
"proc { |#{param_restore_local_name(param_name)}| new_context { %>#{content}<% } #{tag_newlines(el)}}"
|
792
|
+
"proc { |#{param_restore_local_name(param_name)}| new_context { %>#{content}<% ; output_buffer } #{tag_newlines(el)}}"
|
789
793
|
end
|
790
794
|
|
791
795
|
|
@@ -813,7 +817,7 @@ module Dryml
|
|
813
817
|
items = attributes.map do |n,v|
|
814
818
|
dryml_exception("invalid attribute name '#{n}' (remember to use '-' rather than '_')", el) unless n =~ DRYML_NAME_RX
|
815
819
|
|
816
|
-
next if n.in?(SPECIAL_ATTRIBUTES) || n =~ /^without-/
|
820
|
+
next if n.in?(SPECIAL_ATTRIBUTES-['for-type']) || n =~ /^without-/
|
817
821
|
next if el.attributes['part'] && n == 'id' # The id is rendered on the <div class="part-wrapper"> instead
|
818
822
|
|
819
823
|
":#{ruby_name n} => #{attribute_to_ruby(v)}"
|
@@ -1026,8 +1030,6 @@ module Dryml
|
|
1026
1030
|
end
|
1027
1031
|
|
1028
1032
|
def include_source_metadata
|
1029
|
-
# disabled for now -- we're still getting broken rendering with this feature on
|
1030
|
-
return false
|
1031
1033
|
@include_source_metadata = Rails.env.development? && !ENV['DRYML_EDITOR'].blank? if @include_source_metadata.nil?
|
1032
1034
|
@include_source_metadata
|
1033
1035
|
end
|
@@ -144,7 +144,7 @@ module Dryml
|
|
144
144
|
|
145
145
|
id = if (typed_id = object.try.typed_id)
|
146
146
|
typed_id
|
147
|
-
elsif object == this
|
147
|
+
elsif object == @this
|
148
148
|
"this"
|
149
149
|
end
|
150
150
|
attribute ? "#{id}:#{attribute}" : id
|
@@ -162,7 +162,7 @@ module Dryml
|
|
162
162
|
|
163
163
|
|
164
164
|
def refresh_part(encoded_context, session, dom_id)
|
165
|
-
context = Dryml::PartContext.for_refresh(encoded_context, this, session)
|
165
|
+
context = Dryml::PartContext.for_refresh(encoded_context, @this, session)
|
166
166
|
|
167
167
|
with_part_context(context) do
|
168
168
|
send("#{context.part_name}_part", *context.locals)
|
@@ -188,6 +188,20 @@ module Dryml
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
|
+
def parse_for_type(attributes)
|
192
|
+
t = attributes[:for_type]
|
193
|
+
if t.nil?
|
194
|
+
nil
|
195
|
+
elsif t.is_a?(Class)
|
196
|
+
t
|
197
|
+
elsif t =~ /^[A-Z]/
|
198
|
+
t.constantize
|
199
|
+
elsif t =~ /^[a-z]/ && defined?(HoboFields.to_class)
|
200
|
+
HoboFields.to_class(t)
|
201
|
+
else
|
202
|
+
nil
|
203
|
+
end
|
204
|
+
end
|
191
205
|
|
192
206
|
def call_polymorphic_tag(name, *args)
|
193
207
|
name = name.to_s.gsub('-', '_')
|
@@ -246,7 +260,8 @@ module Dryml
|
|
246
260
|
@_form_field_path, @_form_field_paths_by_object ]
|
247
261
|
@_this_type = nil
|
248
262
|
res = nil
|
249
|
-
@view.with_output_buffer { res = yield }
|
263
|
+
outer_res = @view.with_output_buffer { res = yield }
|
264
|
+
Rails.logger.error("new_context: #{caller.first}") if !outer_res.blank? && outer_res.to_s != res.to_s
|
250
265
|
@_this, @_this_parent, @_this_field, @_this_type, @_form_field_path, @_form_field_paths_by_object = ctx
|
251
266
|
res.to_s
|
252
267
|
end
|
@@ -332,13 +347,14 @@ module Dryml
|
|
332
347
|
|
333
348
|
|
334
349
|
def with_form_context(form_this=this, form_field_path=[form_this.class.name.underscore])
|
350
|
+
ctx = [@_form_this, @_form_field_path, @_form_field_paths_by_object]
|
335
351
|
@_form_this = form_this
|
336
352
|
@_form_field_path = form_field_path
|
337
353
|
@_form_field_paths_by_object = { form_this => form_field_path }
|
338
354
|
res = scope.new_scope :in_form => true, :form_field_names => [] do
|
339
355
|
yield
|
340
356
|
end
|
341
|
-
@_form_this
|
357
|
+
@_form_this, @_form_field_path, @_form_field_paths_by_object = ctx
|
342
358
|
res
|
343
359
|
end
|
344
360
|
|
@@ -526,14 +542,6 @@ module Dryml
|
|
526
542
|
end
|
527
543
|
|
528
544
|
|
529
|
-
|
530
|
-
|
531
|
-
def part_contexts_javascripts
|
532
|
-
storage = part_contexts_storage
|
533
|
-
storage.blank? ? "" : "<script type=\"text/javascript\">\n#{storage}</script>\n"
|
534
|
-
end
|
535
|
-
|
536
|
-
|
537
545
|
def part_contexts_storage
|
538
546
|
PartContext.client_side_storage(@_part_contexts, session)
|
539
547
|
end
|
data/lib/dryml.rb
CHANGED
@@ -6,8 +6,10 @@
|
|
6
6
|
|
7
7
|
require 'hobo_support'
|
8
8
|
require 'action_pack'
|
9
|
+
require 'openssl'
|
9
10
|
|
10
11
|
ActiveSupport::Dependencies.autoload_paths |= [File.dirname(__FILE__)]
|
12
|
+
ActiveSupport::Dependencies.autoload_once_paths |= [File.dirname(__FILE__)]
|
11
13
|
|
12
14
|
# The Don't Repeat Yourself Markup Language
|
13
15
|
module Dryml
|
@@ -64,9 +66,10 @@ module Dryml
|
|
64
66
|
end
|
65
67
|
|
66
68
|
def call_render(view, local_assigns, identifier)
|
67
|
-
renderer = page_renderer(view, identifier, local_assigns.keys)
|
68
69
|
this = view.controller.send(:dryml_context) || local_assigns[:this]
|
69
70
|
view.instance_variable_set("@this", this)
|
71
|
+
# do this last, as TemplateEnvironment copies instance variables in initalize
|
72
|
+
renderer = page_renderer(view, identifier, local_assigns.keys)
|
70
73
|
if identifier =~ /#{ID_SEPARATOR}/
|
71
74
|
tag_name = identifier.split(ID_SEPARATOR).last
|
72
75
|
renderer.render_tag(tag_name, {:with => this} )
|
@@ -111,10 +114,10 @@ module Dryml
|
|
111
114
|
end
|
112
115
|
|
113
116
|
def get_field_path(object, path)
|
117
|
+
return nil if object.nil?
|
114
118
|
path = path.is_a?(String) ? path.split('.') : Array(path)
|
115
119
|
parent = nil
|
116
120
|
path.each do |field|
|
117
|
-
return nil if object.nil?
|
118
121
|
parent = object
|
119
122
|
object = get_field(parent, field)
|
120
123
|
end
|
@@ -181,7 +184,7 @@ private
|
|
181
184
|
def taglibs_for(controller_path)
|
182
185
|
( taglibs_in_dir('application').unshift(APPLICATION_TAGLIB) +
|
183
186
|
subsite_taglibs(controller_path) +
|
184
|
-
(controller_path.camelize+"Controller").constantize.try.included_taglibs||[]
|
187
|
+
((controller_path.camelize+"Controller").constantize.try.included_taglibs||[])
|
185
188
|
).compact
|
186
189
|
end
|
187
190
|
|
data/taglibs/core.dryml
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
It's the DRYML equivalent of Ruby's `send` method.
|
5
5
|
-->
|
6
6
|
<def tag="call-tag" attrs="tag">
|
7
|
-
<%=
|
7
|
+
<%= Dryml.static_tags.include?(tag) ?
|
8
|
+
content_tag(tag, parameters.default, attributes) :
|
9
|
+
send(tag.gsub('-', '_'), attributes, parameters) %>
|
8
10
|
</def>
|
9
11
|
|
10
12
|
|
@@ -21,7 +23,15 @@ For example, you might want to wrap an `<img>` tag in an `<a>` tag but only unde
|
|
21
23
|
-->
|
22
24
|
<def tag="wrap" attrs="tag, when, parameter">
|
23
25
|
<% parameter ||= :default %>
|
24
|
-
<%= when_
|
26
|
+
<%= if when_
|
27
|
+
if Dryml.static_tags.include?(tag)
|
28
|
+
content_tag(tag, parameters.default, attributes)
|
29
|
+
else
|
30
|
+
send(tag.gsub('-', '_'), attributes, { parameter.to_sym => parameters[:default] })
|
31
|
+
end
|
32
|
+
else
|
33
|
+
parameters.default
|
34
|
+
end %>
|
25
35
|
</def>
|
26
36
|
|
27
37
|
|
@@ -61,10 +71,10 @@ For example, you might want to wrap an `<img>` tag in an `<a>` tag but only unde
|
|
61
71
|
|
62
72
|
### Usage
|
63
73
|
|
64
|
-
<if test="¤t_user.
|
74
|
+
<if test="¤t_user.administrator?">Logged in as administrator</if>
|
65
75
|
<else>Logged in as normal user</else>
|
66
|
-
|
67
|
-
**IMPORTANT NOTE**: `<if>` tests for non-blank vs. blank (as defined by
|
76
|
+
|
77
|
+
**IMPORTANT NOTE**: `<if>` tests for non-blank vs. blank (as defined by ActiveSupport), not true vs. false.
|
68
78
|
|
69
79
|
If you do not give the `test` attribute, uses the current context instead. This allows a nice trick like this:
|
70
80
|
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dryml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 1.3.0
|
4
|
+
prerelease:
|
5
|
+
version: 1.3.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Tom Locke
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-11-14 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
|
-
- -
|
22
|
+
- - ~>
|
23
23
|
- !ruby/object:Gem::Version
|
24
24
|
version: 3.0.0
|
25
25
|
type: :runtime
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
requirements:
|
33
33
|
- - "="
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version: 1.3.0
|
35
|
+
version: 1.3.0
|
36
36
|
type: :runtime
|
37
37
|
version_requirements: *id002
|
38
38
|
- !ruby/object:Gem::Dependency
|
@@ -50,8 +50,8 @@ description: The Don't Repeat Yourself Markup Language
|
|
50
50
|
email: tom@tomlocke.com
|
51
51
|
executables: []
|
52
52
|
|
53
|
-
extensions:
|
54
|
-
|
53
|
+
extensions:
|
54
|
+
- ext/mkrf_conf.rb
|
55
55
|
extra_rdoc_files: []
|
56
56
|
|
57
57
|
files:
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- TODO.txt
|
63
63
|
- VERSION
|
64
64
|
- dryml.gemspec
|
65
|
+
- ext/mkrf_conf.rb
|
65
66
|
- lib/dryml.rb
|
66
67
|
- lib/dryml/dryml_builder.rb
|
67
68
|
- lib/dryml/dryml_doc.rb
|
@@ -113,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
114
|
requirements: []
|
114
115
|
|
115
116
|
rubyforge_project: hobo
|
116
|
-
rubygems_version: 1.
|
117
|
+
rubygems_version: 1.6.2
|
117
118
|
signing_key:
|
118
119
|
specification_version: 3
|
119
120
|
summary: The Don't Repeat Yourself Markup Language
|