xsltgem 0.0.1
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/.gitignore +14 -0
- data/Gemfile +5 -0
- data/Rakefile +14 -0
- data/assets/json_params.xsl +68 -0
- data/assets/xslt_helpers.xsl +187 -0
- data/lib/xsltgem.rb +128 -0
- data/lib/xsltgem/version.rb +3 -0
- data/lib/xslts/i18n.xsl +124 -0
- data/test/builtin_templates_test.rb +112 -0
- data/test/i18n/normal.en.xml +6 -0
- data/test/i18n/translation.en.xml +5 -0
- data/test/i18n/translation.es.xml +7 -0
- data/test/i18n/translation.ja.xml +5 -0
- data/test/mock/erroneous_action.html.xsl +21 -0
- data/test/mock/test_action.html.xsl +33 -0
- data/test/mock/test_translation.html.xsl +36 -0
- data/test/term_language_test.rb +46 -0
- data/test/translation_test.rb +78 -0
- data/test/xslt_render_test.rb +217 -0
- data/test/xslt_test_helper.rb +88 -0
- data/xsltgem.gemspec +25 -0
- metadata +83 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
$: << File.expand_path(File.dirname(__FILE__) + '/../lib')
|
2
|
+
require 'test/unit'
|
3
|
+
require 'rexml/document'
|
4
|
+
require 'xslt_render'
|
5
|
+
require 'activesupport'
|
6
|
+
require 'pathname'
|
7
|
+
|
8
|
+
RAILS_ENV = :test if not defined? RAILS_ENV
|
9
|
+
RAILS_ROOT = '.' if !defined? RAILS_ROOT
|
10
|
+
if not defined? ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES
|
11
|
+
class ActionView
|
12
|
+
class Helpers
|
13
|
+
class AssetTagHelper
|
14
|
+
JAVASCRIPT_DEFAULT_SOURCES = ''
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class String
|
21
|
+
def blank?
|
22
|
+
self !~ /\S/
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Test::Unit::TestCase
|
27
|
+
def assert_xml_tag(xml, conditions)
|
28
|
+
doc = REXML::Document.new(xml)
|
29
|
+
assert doc.elements[%Q{//#{conditions[:tag]}[text()="#{conditions[:content]}"]}],
|
30
|
+
"expected tag, but no tag found matching #{conditions.inspect} in:\n#{xml.inspect}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module XSLTTestHelper
|
35
|
+
include XSLTRender
|
36
|
+
|
37
|
+
def html_from_xml_helper(xml, partial_template_text,
|
38
|
+
base_template_filename =
|
39
|
+
"#{RAILS_ROOT}/public/xslts/layouts/application.html.xsl")
|
40
|
+
|
41
|
+
include_text = base_template_filename ? %Q{<xsl:include href="#{base_template_filename}" />\n} : ""
|
42
|
+
|
43
|
+
template_text = <<TEMPLATE
|
44
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
45
|
+
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
|
46
|
+
#{include_text}
|
47
|
+
#{partial_template_text}
|
48
|
+
</xsl:stylesheet>
|
49
|
+
TEMPLATE
|
50
|
+
|
51
|
+
template_file = Tempfile.new('template.xsl')
|
52
|
+
template_file.print(template_text)
|
53
|
+
template_file.flush
|
54
|
+
|
55
|
+
html_from_xml(template_file.path, xml).sub(/\A<\?[^>]*\?>\s*/m, '').sub(/\s*\z/m, '')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class TermLanguage
|
60
|
+
attr_reader :translations, :language, :controller_name
|
61
|
+
|
62
|
+
def translation_base
|
63
|
+
Pathname.new(RAILS_ROOT)+'public'+'xslts'+'i18n'
|
64
|
+
end
|
65
|
+
|
66
|
+
def translation_file
|
67
|
+
translation_base+"normal.#{language}.xml"
|
68
|
+
end
|
69
|
+
|
70
|
+
def get_translations
|
71
|
+
REXML::Document.new(File.open(translation_file, 'r') {|f| f.read})
|
72
|
+
end
|
73
|
+
|
74
|
+
def initialize(language_symbol)
|
75
|
+
@language = language_symbol
|
76
|
+
@translations = get_translations
|
77
|
+
end
|
78
|
+
|
79
|
+
def translate(term)
|
80
|
+
if node = translations.elements["/terms/term[@name='#{term}']"]
|
81
|
+
node.text
|
82
|
+
else
|
83
|
+
term
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
alias [] translate
|
88
|
+
end
|
data/xsltgem.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "xsltgem/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "xsltgem"
|
7
|
+
s.version = Xsltgem::VERSION
|
8
|
+
s.authors = ["DarTSeNSe"]
|
9
|
+
s.email = ["sense8life@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{xsltgem}
|
12
|
+
s.description = %q{xsltgem}
|
13
|
+
|
14
|
+
s.rubyforge_project = "xsltgem"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
# specify any dependencies here; for example:
|
22
|
+
s.add_dependency 'xml_serialization'
|
23
|
+
# s.add_development_dependency "rspec"
|
24
|
+
# s.add_runtime_dependency "rest-client"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xsltgem
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- DarTSeNSe
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: xml_serialization
|
16
|
+
requirement: &21039940 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *21039940
|
25
|
+
description: xsltgem
|
26
|
+
email:
|
27
|
+
- sense8life@gmail.com
|
28
|
+
executables: []
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files: []
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- .idea/encodings.xml
|
34
|
+
- .idea/misc.xml
|
35
|
+
- .idea/modules.xml
|
36
|
+
- .idea/scopes/scope_settings.xml
|
37
|
+
- .idea/vcs.xml
|
38
|
+
- .idea/xsltgem.iml
|
39
|
+
- Gemfile
|
40
|
+
- Rakefile
|
41
|
+
- assets/json_params.xsl
|
42
|
+
- assets/xslt_helpers.xsl
|
43
|
+
- lib/xsltgem.rb
|
44
|
+
- lib/xsltgem/version.rb
|
45
|
+
- lib/xslts/i18n.xsl
|
46
|
+
- test/builtin_templates_test.rb
|
47
|
+
- test/i18n/normal.en.xml
|
48
|
+
- test/i18n/translation.en.xml
|
49
|
+
- test/i18n/translation.es.xml
|
50
|
+
- test/i18n/translation.ja.xml
|
51
|
+
- test/mock/erroneous_action.html.xsl
|
52
|
+
- test/mock/test_action.html.xsl
|
53
|
+
- test/mock/test_translation.html.xsl
|
54
|
+
- test/term_language_test.rb
|
55
|
+
- test/translation_test.rb
|
56
|
+
- test/xslt_render_test.rb
|
57
|
+
- test/xslt_test_helper.rb
|
58
|
+
- xsltgem.gemspec
|
59
|
+
homepage: ''
|
60
|
+
licenses: []
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
requirements: []
|
78
|
+
rubyforge_project: xsltgem
|
79
|
+
rubygems_version: 1.8.15
|
80
|
+
signing_key:
|
81
|
+
specification_version: 3
|
82
|
+
summary: xsltgem
|
83
|
+
test_files: []
|