fortitude 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/.travis.yml +26 -2
- data/CHANGES.md +29 -0
- data/lib/fortitude.rb +6 -92
- data/lib/fortitude/doctypes.rb +6 -4
- data/lib/fortitude/doctypes/base.rb +6 -2
- data/lib/fortitude/doctypes/html4.rb +2 -1
- data/lib/fortitude/doctypes/html4_frameset.rb +2 -0
- data/lib/fortitude/doctypes/html4_strict.rb +1 -0
- data/lib/fortitude/doctypes/html4_tags_frameset.rb +3 -2
- data/lib/fortitude/doctypes/html4_tags_strict.rb +3 -2
- data/lib/fortitude/doctypes/html4_tags_transitional.rb +3 -2
- data/lib/fortitude/doctypes/html4_transitional.rb +1 -0
- data/lib/fortitude/doctypes/html5.rb +3 -2
- data/lib/fortitude/doctypes/unknown_doctype.rb +1 -0
- data/lib/fortitude/doctypes/xhtml10.rb +2 -1
- data/lib/fortitude/doctypes/xhtml10_frameset.rb +1 -0
- data/lib/fortitude/doctypes/xhtml10_strict.rb +1 -0
- data/lib/fortitude/doctypes/xhtml10_transitional.rb +1 -0
- data/lib/fortitude/doctypes/xhtml11.rb +2 -1
- data/lib/fortitude/{fortitude_ruby_ext.rb → extensions/fortitude_ruby_ext.rb} +16 -11
- data/lib/fortitude/extensions/native_extensions.rb +33 -0
- data/lib/fortitude/{assign_locals_from_template.rb.smpl → method_templates/assign_locals_from_template.rb.smpl} +0 -0
- data/lib/fortitude/{need_assignment_template.rb.smpl → method_templates/need_assignment_template.rb.smpl} +0 -0
- data/lib/fortitude/{need_method_template.rb.smpl → method_templates/need_method_template.rb.smpl} +0 -0
- data/lib/fortitude/method_templates/simple_template.rb +50 -0
- data/lib/fortitude/{tag_method_template.rb.smpl → method_templates/tag_method_template.rb.smpl} +0 -0
- data/lib/fortitude/{text_method_template.rb.smpl → method_templates/text_method_template.rb.smpl} +0 -0
- data/lib/fortitude/rails.rb +26 -0
- data/lib/fortitude/rails/railtie.rb +256 -0
- data/lib/fortitude/rails/widget_methods.rb +0 -4
- data/lib/fortitude/rendering_context.rb +2 -2
- data/lib/fortitude/support/assigns_proxy.rb +77 -0
- data/lib/fortitude/support/class_inheritable_attributes.rb +98 -0
- data/lib/fortitude/support/instance_variable_set.rb +76 -0
- data/lib/fortitude/support/staticized_method.rb +87 -0
- data/lib/fortitude/tags/partial_tag_placeholder.rb +19 -0
- data/lib/fortitude/tags/tag.rb +189 -0
- data/lib/fortitude/tags/tag_return_value.rb +13 -0
- data/lib/fortitude/tags/tag_store.rb +53 -0
- data/lib/fortitude/tags/tag_support.rb +51 -0
- data/lib/fortitude/tags/tags_module.rb +16 -0
- data/lib/fortitude/tilt.rb +17 -0
- data/lib/fortitude/tilt/fortitude_template.rb +13 -13
- data/lib/fortitude/version.rb +1 -1
- data/lib/fortitude/widget.rb +36 -886
- data/lib/fortitude/widget/around_content.rb +53 -0
- data/lib/fortitude/widget/capturing.rb +37 -0
- data/lib/fortitude/widget/content.rb +51 -0
- data/lib/fortitude/widget/doctypes.rb +53 -0
- data/lib/fortitude/widget/helpers.rb +62 -0
- data/lib/fortitude/widget/integration.rb +76 -0
- data/lib/fortitude/widget/localization.rb +63 -0
- data/lib/fortitude/widget/modules_and_subclasses.rb +58 -0
- data/lib/fortitude/widget/needs.rb +164 -0
- data/lib/fortitude/widget/non_rails_widget_methods.rb +13 -0
- data/lib/fortitude/widget/rendering.rb +93 -0
- data/lib/fortitude/widget/start_and_end_comments.rb +69 -0
- data/lib/fortitude/widget/staticization.rb +50 -0
- data/lib/fortitude/widget/tag_like_methods.rb +102 -0
- data/lib/fortitude/widget/tags.rb +55 -0
- data/lib/fortitude/widget/temporary_overrides.rb +28 -0
- data/lib/fortitude/widget/widget_class_inheritable_attributes.rb +35 -0
- data/lib/fortitude/widgets.rb +12 -0
- data/lib/fortitude_jruby_native_ext.jar +0 -0
- data/spec/helpers/system_helpers.rb +3 -3
- data/spec/system/attribute_rules_system_spec.rb +9 -9
- data/spec/system/doctypes_system_spec.rb +15 -0
- data/spec/system/escaping_system_spec.rb +2 -2
- data/spec/system/formatting_system_spec.rb +2 -2
- data/spec/system/id_uniqueness_system_spec.rb +5 -5
- data/spec/system/method_precedence_system_spec.rb +1 -1
- data/spec/system/needs_system_spec.rb +13 -0
- data/spec/system/setting_inheritance_system_spec.rb +20 -20
- data/spec/system/tag_rendering_system_spec.rb +27 -20
- data/spec/system/tag_rules_system_spec.rb +1 -1
- data/spec/system/tag_updating_system_spec.rb +3 -3
- data/spec/system/tilt_system_spec.rb +4 -0
- data/spec/system/void_tags_system_spec.rb +44 -5
- metadata +42 -21
- data/lib/fortitude/assigns_proxy.rb +0 -75
- data/lib/fortitude/class_inheritable_attributes.rb +0 -96
- data/lib/fortitude/instance_variable_set.rb +0 -74
- data/lib/fortitude/non_rails_widget_methods.rb +0 -15
- data/lib/fortitude/partial_tag_placeholder.rb +0 -17
- data/lib/fortitude/railtie.rb +0 -254
- data/lib/fortitude/simple_template.rb +0 -45
- data/lib/fortitude/staticized_method.rb +0 -85
- data/lib/fortitude/tag.rb +0 -162
- data/lib/fortitude/tag_return_value.rb +0 -11
- data/lib/fortitude/tag_store.rb +0 -48
- data/lib/fortitude/tag_support.rb +0 -48
- data/lib/fortitude/tags_module.rb +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 18462239455549b7d5cb928e800d12039ee251d5
|
|
4
|
+
data.tar.gz: 36098bcd9321189387d6321c9211e335adb4d530
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f2ccd3ba05b45c281a0d5919ab747c8a2afcaec9c06c7b303e45a757502c6201f58968279af65077a358cd8d92662cb93e9b59cb03b5a45de7db014e2a9fe112
|
|
7
|
+
data.tar.gz: db8657d85913dfa462056ca3965bcf41120cc64bd3fca78976a228eee205a552f78f354877f4c7ce5896b9cfba5b121da5516cabac05b572fc0d4272cffd32a3
|
data/.travis.yml
CHANGED
|
@@ -13,8 +13,7 @@ env:
|
|
|
13
13
|
- FORTITUDE_NATIVE_EXTENSIONS=false FORTITUDE_SPECS_RAILS_VERSION=4.1.1
|
|
14
14
|
- FORTITUDE_NATIVE_EXTENSIONS=false FORTITUDE_SPECS_RAILS_VERSION=3.0.20
|
|
15
15
|
before_script:
|
|
16
|
-
- export JRUBY_OPTS="$JRUBY_OPTS -J-
|
|
17
|
-
- echo "JRUBY_OPTS=$JRUBY_OPTS"
|
|
16
|
+
- export JRUBY_OPTS="$JRUBY_OPTS -J-Xmx128m -J-Xms128m -J-Xss2048k"
|
|
18
17
|
matrix:
|
|
19
18
|
exclude:
|
|
20
19
|
# Rails 4.x doesn't support Ruby 1.8.7
|
|
@@ -24,3 +23,28 @@ matrix:
|
|
|
24
23
|
env: FORTITUDE_NATIVE_EXTENSIONS=false FORTITUDE_SPECS_RAILS_VERSION=4.1.1
|
|
25
24
|
- rvm: 1.8.7
|
|
26
25
|
env: FORTITUDE_SPECS_RAILS_VERSION=4.0.5
|
|
26
|
+
# 2014-06-19 ageweke -- ARGH. After trying about seventeen different things, no matter what I do,
|
|
27
|
+
# Travis fails JRuby builds about 20% of the time with "Killed". Their documentation indicates that this
|
|
28
|
+
# is likely an out-of-memory issue (i.e., entire VM's memory is consumed). However, I'm running JRuby with
|
|
29
|
+
# only 128MB allocated to each VM (per above) -- yuck -- and it's still happening; this makes no sense, as it
|
|
30
|
+
# would take something like 20+ concurrent JRuby processes to consume 3GB, and we should never be running
|
|
31
|
+
# more than 2-3.
|
|
32
|
+
#
|
|
33
|
+
# At this point, I have little choice other than to mark these as 'allowed failures', and check in on each
|
|
34
|
+
# one manually to make sure there aren't other failures, too. This is very frustrating, but I can't seem to
|
|
35
|
+
# find a way around it. If there's a fix out there somewhere, I'm all ears!
|
|
36
|
+
allow_failures:
|
|
37
|
+
- rvm: jruby-1.7.12
|
|
38
|
+
env: FORTITUDE_SPECS_RAILS_VERSION=4.1.1
|
|
39
|
+
- rvm: jruby-1.7.12
|
|
40
|
+
env: FORTITUDE_SPECS_RAILS_VERSION=4.0.5
|
|
41
|
+
- rvm: jruby-1.7.12
|
|
42
|
+
env: FORTITUDE_SPECS_RAILS_VERSION=3.2.18
|
|
43
|
+
- rvm: jruby-1.7.12
|
|
44
|
+
env: FORTITUDE_SPECS_RAILS_VERSION=3.1.12
|
|
45
|
+
- rvm: jruby-1.7.12
|
|
46
|
+
env: FORTITUDE_SPECS_RAILS_VERSION=3.0.20
|
|
47
|
+
- rvm: jruby-1.7.12
|
|
48
|
+
env: FORTITUDE_NATIVE_EXTENSIONS=false FORTITUDE_SPECS_RAILS_VERSION=4.1.1
|
|
49
|
+
- rvm: jruby-1.7.12
|
|
50
|
+
env: FORTITUDE_NATIVE_EXTENSIONS=false FORTITUDE_SPECS_RAILS_VERSION=3.0.20
|
data/CHANGES.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Fortitude Releases
|
|
2
|
+
|
|
3
|
+
## 0.0.2, 21 June 2014
|
|
4
|
+
|
|
5
|
+
* Void tags (those that can't take content, ever, like `<hr>` or `<br>`) are now never closed in HTML4 doctypes
|
|
6
|
+
(_i.e._, just output as plain `<hr>`, with no close tag), since using self-closing syntax (`<hr/>`) is
|
|
7
|
+
[broken](http://stackoverflow.com/questions/3558119/are-self-closing-tags-valid-in-html5) and an end tag (`</hr>`)
|
|
8
|
+
is illegal according to the [W3C Validator](http://validator.w3.org/). In XHTML doctypes, they are always closed
|
|
9
|
+
using self-closing syntax (`<hr/>`) since they have to be closed somehow and that's a good way to indicate that
|
|
10
|
+
they are void (can't ever take content). In HTML5, they are left unclosed by default (since HTML5 knows they're void
|
|
11
|
+
and isn't expecting an end tag for them, ever), but you can use `close_void_tags true` to add self-closing syntax
|
|
12
|
+
for them (`<br/>`) if you want, since
|
|
13
|
+
[that is now allowed in HTML5](http://stackoverflow.com/questions/3558119/are-self-closing-tags-valid-in-html5).
|
|
14
|
+
See [this article](http://www.colorglare.com/2014/02/03/to-close-or-not-to-close.html) for even more discussion.
|
|
15
|
+
* Empty tags (those that _can_ take content, but just happen not to) are now always closed using a separate tag
|
|
16
|
+
(_e.g._, `<p></p>`), since it is
|
|
17
|
+
[not legal or correct](http://stackoverflow.com/questions/3558119/are-self-closing-tags-valid-in-html5) to use
|
|
18
|
+
self-closing syntax (`<p/>`) here in HTML doctypes (HTML4 or HTML5), and it is perfectly legal in XHTML doctypes to
|
|
19
|
+
use a separate closing tag — and, in a way, nice, since it lets you visually differentiate between void tags
|
|
20
|
+
and normal tags that just happen to be empty.
|
|
21
|
+
* Very significant internal refactoring of code to make development easier, and new developers' lives easier.
|
|
22
|
+
* Fixed support for Tilt < 2.x; earlier Tilt versions expect to be able to instantiate a template class with an empty
|
|
23
|
+
string and have it not raise an exception, as a way of testing whether an engine works. (Empty strings are not
|
|
24
|
+
valid Fortitude templates, since we expect to see a class declaration in there.) Now we trap that case explicitly to
|
|
25
|
+
do nothing, which allows Tilt 1.4.x to work.
|
|
26
|
+
|
|
27
|
+
## 0.0.1, 18 June 2014
|
|
28
|
+
|
|
29
|
+
* Very first release of Fortitude.
|
data/lib/fortitude.rb
CHANGED
|
@@ -1,93 +1,7 @@
|
|
|
1
1
|
require "fortitude/version"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
autoload :Html4Frameset, 'fortitude/widgets/html4_frameset'
|
|
9
|
-
autoload :Xhtml10Strict, 'fortitude/widgets/xhtml10_strict'
|
|
10
|
-
autoload :Xhtml10Transitional, 'fortitude/widgets/xhtml10_transitional'
|
|
11
|
-
autoload :Xhtml10Frameset, 'fortitude/widgets/xhtml10_frameset'
|
|
12
|
-
autoload :Xhtml11, 'fortitude/widgets/xhtml11'
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# See if we can load Rails -- but don't fail if we can't; we'll just use this to decide whether we should
|
|
17
|
-
# load the Railtie or not.
|
|
18
|
-
begin
|
|
19
|
-
gem 'rails'
|
|
20
|
-
rescue Gem::LoadError => le
|
|
21
|
-
# ok
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
begin
|
|
25
|
-
require 'rails'
|
|
26
|
-
rescue LoadError => le
|
|
27
|
-
# ok
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
if defined?(::Rails)
|
|
31
|
-
require 'action_view'
|
|
32
|
-
|
|
33
|
-
require 'fortitude/rails/widget_methods'
|
|
34
|
-
require 'fortitude/rails/renderer'
|
|
35
|
-
require 'fortitude/rails/template_handler'
|
|
36
|
-
require 'fortitude/railtie'
|
|
37
|
-
else
|
|
38
|
-
require 'fortitude/non_rails_widget_methods'
|
|
39
|
-
|
|
40
|
-
::String.class_eval do
|
|
41
|
-
alias_method :original_concat, :concat
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
require 'fortitude/widget'
|
|
46
|
-
|
|
47
|
-
native_loaded = false
|
|
48
|
-
|
|
49
|
-
if %w{false off 0}.include?((ENV['FORTITUDE_NATIVE_EXTENSIONS'] || '').strip.downcase)
|
|
50
|
-
$stderr.puts <<-EOM
|
|
51
|
-
WARNING: Fortitude native extensions disabled via environment variable FORTITUDE_NATIVE_EXTENSIONS.
|
|
52
|
-
Performance may be reduced by a factor of 3-5x!
|
|
53
|
-
EOM
|
|
54
|
-
else
|
|
55
|
-
begin
|
|
56
|
-
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
|
57
|
-
require 'fortitude_jruby_native_ext.jar'
|
|
58
|
-
else
|
|
59
|
-
require File.join(File.dirname(__FILE__), 'fortitude_native_ext')
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
native_loaded = true
|
|
63
|
-
rescue LoadError => le
|
|
64
|
-
$stderr.puts <<-EOM
|
|
65
|
-
WARNING: The Fortitude gem cannot load its native extensions. Performance may be reduced by a factor of 3-5x!
|
|
66
|
-
Load path: #{$:.inspect}
|
|
67
|
-
Error: #{le.message} (#{le.class})
|
|
68
|
-
EOM
|
|
69
|
-
native_loaded = false
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
unless native_loaded
|
|
74
|
-
require 'fortitude/fortitude_ruby_ext'
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
if defined?(::ActiveSupport::SafeBuffer)
|
|
78
|
-
::ActiveSupport::SafeBuffer.class_eval do
|
|
79
|
-
public :original_concat
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
begin
|
|
84
|
-
require 'tilt'
|
|
85
|
-
rescue LoadError => le
|
|
86
|
-
# ok, whatever
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
if defined?(::Tilt)
|
|
90
|
-
require 'fortitude/tilt/fortitude_template'
|
|
91
|
-
|
|
92
|
-
Tilt.register(Fortitude::Tilt::FortitudeTemplate, 'rb')
|
|
93
|
-
end
|
|
2
|
+
require "fortitude/widgets"
|
|
3
|
+
require "fortitude/rails"
|
|
4
|
+
require "fortitude/extensions/native_extensions"
|
|
5
|
+
require "fortitude/rendering_context"
|
|
6
|
+
require "fortitude/widget"
|
|
7
|
+
require "fortitude/tilt"
|
data/lib/fortitude/doctypes.rb
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
require 'fortitude/doctypes/
|
|
1
|
+
require 'fortitude/doctypes/base'
|
|
2
|
+
require 'fortitude/doctypes/html4'
|
|
3
|
+
require 'fortitude/doctypes/html4_frameset'
|
|
2
4
|
require 'fortitude/doctypes/html4_strict'
|
|
3
5
|
require 'fortitude/doctypes/html4_transitional'
|
|
4
|
-
require 'fortitude/doctypes/
|
|
5
|
-
require 'fortitude/doctypes/
|
|
6
|
+
require 'fortitude/doctypes/html5'
|
|
7
|
+
require 'fortitude/doctypes/xhtml10'
|
|
8
|
+
require 'fortitude/doctypes/xhtml10_frameset'
|
|
6
9
|
require 'fortitude/doctypes/xhtml10_strict'
|
|
7
10
|
require 'fortitude/doctypes/xhtml10_transitional'
|
|
8
|
-
require 'fortitude/doctypes/xhtml10_frameset'
|
|
9
11
|
require 'fortitude/doctypes/xhtml11'
|
|
10
12
|
|
|
11
13
|
module Fortitude
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
require 'fortitude/tag_store'
|
|
1
|
+
require 'fortitude/tags/tag_store'
|
|
2
2
|
|
|
3
3
|
module Fortitude
|
|
4
4
|
module Doctypes
|
|
5
5
|
class Base
|
|
6
|
-
extend Fortitude::TagStore
|
|
6
|
+
extend Fortitude::Tags::TagStore
|
|
7
7
|
|
|
8
8
|
class << self
|
|
9
9
|
def delegate_tag_stores
|
|
@@ -30,6 +30,10 @@ module Fortitude
|
|
|
30
30
|
w.doctype(@doctype_line)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
def close_void_tags_must_be
|
|
34
|
+
nil
|
|
35
|
+
end
|
|
36
|
+
|
|
33
37
|
def to_s
|
|
34
38
|
"<Doctype #{name.inspect}>"
|
|
35
39
|
end
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
require 'fortitude/
|
|
1
|
+
require 'fortitude/doctypes'
|
|
2
|
+
require 'fortitude/tags/tag_store'
|
|
2
3
|
require 'fortitude/doctypes/html4_tags_transitional'
|
|
3
4
|
|
|
4
5
|
module Fortitude
|
|
5
6
|
module Doctypes
|
|
6
7
|
module Html4TagsFrameset
|
|
7
|
-
extend Fortitude::TagStore
|
|
8
|
+
extend Fortitude::Tags::TagStore
|
|
8
9
|
|
|
9
10
|
class << self
|
|
10
11
|
def delegate_tag_stores
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
require 'fortitude/
|
|
1
|
+
require 'fortitude/doctypes'
|
|
2
|
+
require 'fortitude/tags/tag_store'
|
|
2
3
|
|
|
3
4
|
module Fortitude
|
|
4
5
|
module Doctypes
|
|
5
6
|
module Html4TagsStrict
|
|
6
|
-
extend Fortitude::TagStore
|
|
7
|
+
extend Fortitude::Tags::TagStore
|
|
7
8
|
|
|
8
9
|
# HTML4.01 DTD
|
|
9
10
|
I18N_ATTRIBUTES = %w{lang dir}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
require 'fortitude/
|
|
1
|
+
require 'fortitude/doctypes'
|
|
2
|
+
require 'fortitude/tags/tag_store'
|
|
2
3
|
require 'fortitude/doctypes/html4_tags_strict'
|
|
3
4
|
|
|
4
5
|
module Fortitude
|
|
5
6
|
module Doctypes
|
|
6
7
|
module Html4TagsTransitional
|
|
7
|
-
extend Fortitude::TagStore
|
|
8
|
+
extend Fortitude::Tags::TagStore
|
|
8
9
|
|
|
9
10
|
class << self
|
|
10
11
|
def delegate_tag_stores
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require 'fortitude/doctypes'
|
|
1
2
|
require 'fortitude/doctypes/base'
|
|
2
3
|
|
|
3
4
|
module Fortitude
|
|
@@ -15,8 +16,8 @@ module Fortitude
|
|
|
15
16
|
false
|
|
16
17
|
end
|
|
17
18
|
|
|
18
|
-
def
|
|
19
|
-
|
|
19
|
+
def close_void_tags_must_be
|
|
20
|
+
nil
|
|
20
21
|
end
|
|
21
22
|
|
|
22
23
|
# HTML5 spec, section 3.2.5
|
|
@@ -13,17 +13,22 @@ require 'erb'
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
::Hash.class_eval do
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
{
|
|
17
|
+
'FORTITUDE_HYPHEN' => '-',
|
|
18
|
+
'FORTITUDE_EQUALS_QUOTE' => '="',
|
|
19
|
+
'FORTITUDE_QUOTE' => '"',
|
|
20
|
+
'FORTITUDE_SPACE' => ' ',
|
|
21
|
+
'TARGET_BASE' => ""
|
|
22
|
+
}.each do |constant_name, value|
|
|
23
|
+
value = value.html_safe if value.respond_to?(:html_safe)
|
|
24
|
+
value = value.freeze
|
|
25
|
+
const_set(constant_name, value)
|
|
26
|
+
end
|
|
22
27
|
|
|
23
28
|
def fortitude_append_as_attributes(output, prefix)
|
|
24
29
|
raise ArgumentError, "You can only append to a String" unless output.kind_of?(String)
|
|
25
30
|
|
|
26
|
-
target = TARGET_BASE.dup
|
|
31
|
+
target = ::Hash::TARGET_BASE.dup
|
|
27
32
|
|
|
28
33
|
each do |key, value|
|
|
29
34
|
if value.kind_of?(Hash)
|
|
@@ -33,10 +38,10 @@ end
|
|
|
33
38
|
else raise ArgumentError, "You can only use a String as a prefix"
|
|
34
39
|
end
|
|
35
40
|
|
|
36
|
-
new_prefix.original_concat(FORTITUDE_HYPHEN)
|
|
41
|
+
new_prefix.original_concat(::Hash::FORTITUDE_HYPHEN)
|
|
37
42
|
value.fortitude_append_as_attributes(target, new_prefix)
|
|
38
43
|
else
|
|
39
|
-
target.original_concat(FORTITUDE_SPACE)
|
|
44
|
+
target.original_concat(::Hash::FORTITUDE_SPACE)
|
|
40
45
|
|
|
41
46
|
case prefix
|
|
42
47
|
when String then target.original_concat(prefix)
|
|
@@ -45,9 +50,9 @@ end
|
|
|
45
50
|
end
|
|
46
51
|
|
|
47
52
|
fortitude_append_to(key, target)
|
|
48
|
-
target.original_concat(FORTITUDE_EQUALS_QUOTE)
|
|
53
|
+
target.original_concat(::Hash::FORTITUDE_EQUALS_QUOTE)
|
|
49
54
|
fortitude_append_to(value, target)
|
|
50
|
-
target.original_concat(FORTITUDE_QUOTE)
|
|
55
|
+
target.original_concat(::Hash::FORTITUDE_QUOTE)
|
|
51
56
|
end
|
|
52
57
|
end
|
|
53
58
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
native_loaded = false
|
|
2
|
+
|
|
3
|
+
if %w{false off 0}.include?((ENV['FORTITUDE_NATIVE_EXTENSIONS'] || '').strip.downcase)
|
|
4
|
+
$stderr.puts <<-EOM
|
|
5
|
+
WARNING: Fortitude native extensions disabled via environment variable FORTITUDE_NATIVE_EXTENSIONS.
|
|
6
|
+
Performance may be reduced by a factor of 3-5x!
|
|
7
|
+
EOM
|
|
8
|
+
else
|
|
9
|
+
begin
|
|
10
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
|
11
|
+
require 'fortitude_jruby_native_ext.jar'
|
|
12
|
+
else
|
|
13
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'fortitude_native_ext'))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
native_loaded = true
|
|
17
|
+
rescue LoadError => le
|
|
18
|
+
$stderr.puts <<-EOM
|
|
19
|
+
WARNING: The Fortitude gem cannot load its native extensions. Performance may be reduced by a factor of 3-5x!
|
|
20
|
+
Load path: #{$:.inspect}
|
|
21
|
+
Error: #{le.message} (#{le.class})
|
|
22
|
+
EOM
|
|
23
|
+
native_loaded = false
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
unless native_loaded
|
|
28
|
+
require 'fortitude/extensions/fortitude_ruby_ext'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
require 'active_support'
|
|
32
|
+
|
|
33
|
+
::ActiveSupport::SafeBuffer.class_eval { public :original_concat } if defined?(::ActiveSupport::SafeBuffer)
|