jekyll-multiple-languages-plugin 1.2.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.
@@ -0,0 +1,92 @@
1
+ @media (max-width:1309px) {
2
+ #cover-photo {
3
+ max-width: 95%;
4
+ }
5
+
6
+ .header {
7
+ padding-top: 3.45em;
8
+ }
9
+
10
+ .posts {
11
+ font-size: 0.9em;
12
+ }
13
+
14
+ .footer {
15
+ font-size: 0.85em;
16
+ }
17
+ }
18
+
19
+ @media (max-width:1090px) {
20
+ #logo {
21
+ max-width: 100px;
22
+ }
23
+
24
+ #title {
25
+ font-size: 3em;
26
+ }
27
+
28
+ .header {
29
+ padding-top: 3.85em;
30
+ }
31
+
32
+ .posts {
33
+ font-size: 0.85em;
34
+ }
35
+
36
+ .sidebar {
37
+ padding-left: 4em;
38
+ }
39
+
40
+ .content {
41
+ padding-right: 3em;
42
+ }
43
+
44
+ .footer {
45
+ font-size: 0.85em;
46
+ }
47
+ }
48
+
49
+ /**
50
+ * iPhone width
51
+ **/
52
+ @media (max-width:640px) {
53
+ #logo {
54
+ max-width: 75px;
55
+ }
56
+
57
+ #cover-photo-container {
58
+ text-align: center;
59
+ }
60
+
61
+ #title {
62
+ font-size: 2.5em;
63
+ }
64
+
65
+ .sidebar {
66
+ transition: 1s;
67
+ margin-left: -100%;
68
+ z-index: 3;
69
+ width: 35%;
70
+ padding-left: 1.75em;
71
+ }
72
+
73
+ .content {
74
+ z-index: 1;
75
+ padding-right: 2em;
76
+ }
77
+
78
+ #sidebar-button {
79
+ display: block;
80
+ z-index: 2;
81
+ }
82
+ }
83
+
84
+ /*****************************************************************************/
85
+ /*
86
+ /* Sidebar responsive animations
87
+ /*
88
+ /*****************************************************************************/
89
+
90
+ .slideIn {
91
+ margin-left: 0%;
92
+ }
@@ -0,0 +1,60 @@
1
+ .highlight { background: #ffffff; }
2
+ .highlight .c { color: #999988; font-style: italic } /* Comment */
3
+ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
4
+ .highlight .k { font-weight: bold } /* Keyword */
5
+ .highlight .o { font-weight: bold } /* Operator */
6
+ .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
7
+ .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
8
+ .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
9
+ .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
10
+ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
11
+ .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
12
+ .highlight .ge { font-style: italic } /* Generic.Emph */
13
+ .highlight .gr { color: #aa0000 } /* Generic.Error */
14
+ .highlight .gh { color: #999999 } /* Generic.Heading */
15
+ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
16
+ .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
17
+ .highlight .go { color: #888888 } /* Generic.Output */
18
+ .highlight .gp { color: #555555 } /* Generic.Prompt */
19
+ .highlight .gs { font-weight: bold } /* Generic.Strong */
20
+ .highlight .gu { color: #aaaaaa } /* Generic.Subheading */
21
+ .highlight .gt { color: #aa0000 } /* Generic.Traceback */
22
+ .highlight .kc { font-weight: bold } /* Keyword.Constant */
23
+ .highlight .kd { font-weight: bold } /* Keyword.Declaration */
24
+ .highlight .kp { font-weight: bold } /* Keyword.Pseudo */
25
+ .highlight .kr { font-weight: bold } /* Keyword.Reserved */
26
+ .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
27
+ .highlight .m { color: #009999 } /* Literal.Number */
28
+ .highlight .s { color: #d14 } /* Literal.String */
29
+ .highlight .na { color: #008080 } /* Name.Attribute */
30
+ .highlight .nb { color: #0086B3 } /* Name.Builtin */
31
+ .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
32
+ .highlight .no { color: #008080 } /* Name.Constant */
33
+ .highlight .ni { color: #800080 } /* Name.Entity */
34
+ .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
35
+ .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
36
+ .highlight .nn { color: #555555 } /* Name.Namespace */
37
+ .highlight .nt { color: #000080 } /* Name.Tag */
38
+ .highlight .nv { color: #008080 } /* Name.Variable */
39
+ .highlight .ow { font-weight: bold } /* Operator.Word */
40
+ .highlight .w { color: #bbbbbb } /* Text.Whitespace */
41
+ .highlight .mf { color: #009999 } /* Literal.Number.Float */
42
+ .highlight .mh { color: #009999 } /* Literal.Number.Hex */
43
+ .highlight .mi { color: #009999 } /* Literal.Number.Integer */
44
+ .highlight .mo { color: #009999 } /* Literal.Number.Oct */
45
+ .highlight .sb { color: #d14 } /* Literal.String.Backtick */
46
+ .highlight .sc { color: #d14 } /* Literal.String.Char */
47
+ .highlight .sd { color: #d14 } /* Literal.String.Doc */
48
+ .highlight .s2 { color: #d14 } /* Literal.String.Double */
49
+ .highlight .se { color: #d14 } /* Literal.String.Escape */
50
+ .highlight .sh { color: #d14 } /* Literal.String.Heredoc */
51
+ .highlight .si { color: #d14 } /* Literal.String.Interpol */
52
+ .highlight .sx { color: #d14 } /* Literal.String.Other */
53
+ .highlight .sr { color: #009926 } /* Literal.String.Regex */
54
+ .highlight .s1 { color: #d14 } /* Literal.String.Single */
55
+ .highlight .ss { color: #990073 } /* Literal.String.Symbol */
56
+ .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
57
+ .highlight .vc { color: #008080 } /* Name.Variable.Class */
58
+ .highlight .vg { color: #008080 } /* Name.Variable.Global */
59
+ .highlight .vi { color: #008080 } /* Name.Variable.Instance */
60
+ .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
Binary file
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: default
3
+ title: Home
4
+ ---
5
+
6
+ {% assign page = site.posts.first %}
7
+ {% assign content = page.content %}
8
+ {% include post.html %}
@@ -0,0 +1,14 @@
1
+ window.onload = function() {
2
+ var sidebar = document.getElementById("sidebar");
3
+ var sidebarButton = document.getElementById("sidebar-button");
4
+
5
+ function openSidebar(e) {
6
+ if (sidebar.className.indexOf("slideIn") != -1) {
7
+ sidebar.className = sidebar.className.replace(" slideIn", "");
8
+ } else {
9
+ sidebar.className = sidebar.className + " slideIn";
10
+ }
11
+ }
12
+
13
+ sidebarButton.addEventListener("click", openSidebar, false);
14
+ };
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'jekyll/multiple/languages/plugin/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "jekyll-multiple-languages-plugin"
8
+ spec.version = Jekyll::Multiple::Languages::Plugin::VERSION
9
+ spec.authors = ["Martin Kurtsson"]
10
+ spec.email = ["martin.kurtsson@screeninteraction.com"]
11
+ spec.description = %q{I18n plugin for Jekyll}
12
+ spec.summary = %q{I18n plugin for Jekyll}
13
+ spec.homepage = "https://github.com/screeninteraction/jekyll-multiple-languages-plugin/"
14
+ spec.license = "MPL2"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ end
@@ -0,0 +1,132 @@
1
+ require "jekyll/multiple/languages/plugin/version"
2
+
3
+ module Jekyll
4
+ class Site
5
+ alias :process_org :process
6
+ def process
7
+ #Variables
8
+ self.config['baseurl_root'] = self.config['baseurl']
9
+ dest_org = self.dest
10
+ baseurl_org = self.baseurl
11
+ languages = self.config['languages']
12
+
13
+ #Loop
14
+ self.config['lang'] = languages.first
15
+ puts
16
+ puts "Building site for default language: \"#{self.config['lang']}\" to: " + self.dest
17
+ process_org
18
+ languages.drop(1).each do |lang|
19
+
20
+ # Build site for language lang
21
+ self.dest = self.dest + "/" + lang
22
+ self.baseurl = self.baseurl + "/" + lang
23
+ self.config['baseurl'] = self.baseurl
24
+ self.config['lang'] = lang
25
+ puts "Building site for language: \"#{self.config['lang']}\" to: " + self.dest
26
+ process_org
27
+
28
+ #Reset variables for next language
29
+ self.dest = dest_org
30
+ self.baseurl = baseurl_org
31
+ self.config['baseurl'] = baseurl_org
32
+ end
33
+ puts 'Build complete'
34
+ end
35
+
36
+ alias :read_posts_org :read_posts
37
+ def read_posts(dir)
38
+ if dir == ''
39
+ posts = read_things("_i18n/#{self.config['lang']}","_posts", Post)
40
+ posts.each do |post|
41
+ post.categories = []
42
+ if post.date != ''
43
+ if post.published && (self.future || post.date <= self.time)
44
+ aggregate_post_info(post)
45
+ end
46
+ end
47
+ end
48
+ else
49
+ read_posts_org(dir)
50
+ end
51
+ end
52
+ end
53
+
54
+ class LocalizeInclude < Jekyll::Tags::IncludeTag
55
+ def render(context)
56
+ if "#{context[@file]}" != "" #Check for page variable
57
+ file = "#{context[@file]}"
58
+ else
59
+ file = @file
60
+ end
61
+
62
+ includes_dir = File.join(context.registers[:site].source, '_i18n/' + context.registers[:site].config['lang'])
63
+
64
+ if File.symlink?(includes_dir)
65
+ return "Includes directory '#{includes_dir}' cannot be a symlink"
66
+ end
67
+ if file !~ /^[a-zA-Z0-9_\/\.-]+$/ || file =~ /\.\// || file =~ /\/\./
68
+ return "Include file '#{file}' contains invalid characters or sequences"
69
+ end
70
+
71
+ Dir.chdir(includes_dir) do
72
+ choices = Dir['**/*'].reject { |x| File.symlink?(x) }
73
+ if choices.include?(file)
74
+ source = File.read(file)
75
+ partial = Liquid::Template.parse(source)
76
+
77
+ context.stack do
78
+ context['include'] = parse_params(context) if @params
79
+ contents = partial.render(context)
80
+ site = context.registers[:site]
81
+ ext = File.extname(file)
82
+
83
+ converter = site.converters.find { |c| c.matches(ext) }
84
+ contents = converter.convert(contents) unless converter.nil?
85
+
86
+ contents
87
+ end
88
+ else
89
+ "Included file '#{file}' not found in #{includes_dir} directory"
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ class LocalizeTag < Liquid::Tag
96
+
97
+ def initialize(tag_name, key, tokens)
98
+ super
99
+ @key = key.strip
100
+ end
101
+
102
+ def render(context)
103
+ if "#{context[@key]}" != "" #Check for page variable
104
+ key = "#{context[@key]}"
105
+ else
106
+ key = @key
107
+ end
108
+ lang = context.registers[:site].config['lang']
109
+ candidate = YAML.load_file(context.registers[:site].source + "/_i18n/#{lang}.yml")
110
+ path = key.split(/\./) if key.is_a?(String)
111
+ while !path.empty?
112
+ key = path.shift
113
+ if candidate[key]
114
+ candidate = candidate[key]
115
+ else
116
+ candidate = ""
117
+ end
118
+ end
119
+ if candidate == ""
120
+ puts "Missing i18n key: " + lang + ":" + key
121
+ "*" + lang + ":" + key + "*"
122
+ else
123
+ candidate
124
+ end
125
+ end
126
+ end
127
+ end
128
+
129
+ Liquid::Template.register_tag('t', Jekyll::LocalizeTag)
130
+ Liquid::Template.register_tag('tf', Jekyll::LocalizeInclude)
131
+ Liquid::Template.register_tag('translate', Jekyll::LocalizeTag)
132
+ Liquid::Template.register_tag('translate_file', Jekyll::LocalizeInclude)
@@ -0,0 +1,9 @@
1
+ module Jekyll
2
+ module Multiple
3
+ module Languages
4
+ module Plugin
5
+ VERSION = "1.2.0"
6
+ end
7
+ end
8
+ end
9
+ end
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-multiple-languages-plugin
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Martin Kurtsson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: I18n plugin for Jekyll
42
+ email:
43
+ - martin.kurtsson@screeninteraction.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - LICENSE.txt
51
+ - README.md
52
+ - Rakefile
53
+ - example/Gemfile
54
+ - example/LICENSE
55
+ - example/README.md
56
+ - example/_config.yml
57
+ - example/_i18n/en.yml
58
+ - example/_i18n/en/_posts/2013-12-09-example-post.md
59
+ - example/_i18n/es.yml
60
+ - example/_i18n/es/_posts/2013-12-09-example-post.md
61
+ - example/_i18n/it.yml
62
+ - example/_i18n/it/_posts/2013-12-09-example-post.md
63
+ - example/_includes/post.html
64
+ - example/_layouts/default.html
65
+ - example/_layouts/post.html
66
+ - example/_plugins/jekyll-multiple-languages-plugin.rb
67
+ - example/css/main.css
68
+ - example/css/responsive.css
69
+ - example/css/syntax.css
70
+ - example/favicon.ico
71
+ - example/images/cover.jpg
72
+ - example/images/logo.png
73
+ - example/images/sidebar-button.png
74
+ - example/index.html
75
+ - example/scripts/responsive.js
76
+ - jekyll-multiple-languages-plugin.gemspec
77
+ - lib/jekyll/multiple/languages/plugin.rb
78
+ - lib/jekyll/multiple/languages/plugin/version.rb
79
+ homepage: https://github.com/screeninteraction/jekyll-multiple-languages-plugin/
80
+ licenses:
81
+ - MPL2
82
+ metadata: {}
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.1.11
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: I18n plugin for Jekyll
103
+ test_files: []