amber 0.2.6 → 0.3.8
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 +7 -0
- data/LICENSE +14 -1
- data/README.md +88 -19
- data/bin/amber +26 -13
- data/lib/amber.rb +25 -39
- data/lib/amber/cli.rb +25 -1
- data/lib/amber/i18n.rb +43 -0
- data/lib/amber/render/apache.rb +44 -0
- data/lib/amber/render/asset.rb +28 -2
- data/lib/amber/render/helpers/blog_helper.rb +35 -0
- data/lib/amber/render/helpers/date_helper.rb +14 -0
- data/lib/amber/render/helpers/haml_helper.rb +9 -0
- data/lib/amber/render/helpers/html_helper.rb +30 -8
- data/lib/amber/render/helpers/navigation_helper.rb +31 -32
- data/lib/amber/render/layout.rb +2 -1
- data/lib/amber/render/template.rb +24 -11
- data/lib/amber/render/view.rb +31 -12
- data/lib/amber/server.rb +122 -56
- data/lib/amber/site.rb +171 -29
- data/lib/amber/site_configuration.rb +26 -11
- data/lib/amber/static_page.rb +34 -20
- data/lib/amber/static_page/filesystem.rb +3 -7
- data/lib/amber/static_page/page_properties.rb +7 -0
- data/lib/amber/static_page/render.rb +47 -31
- data/lib/amber/templates/apache_config.erb +12 -0
- data/lib/amber/templates/apache_config_with_prefix.erb +14 -0
- data/lib/amber/templates/htaccess.erb +176 -0
- data/lib/amber/version.rb +5 -0
- data/locales/rails-i18n/af.yml +201 -0
- data/locales/rails-i18n/ar.yml +274 -0
- data/locales/rails-i18n/az.yml +192 -0
- data/locales/rails-i18n/bg.yml +192 -0
- data/locales/rails-i18n/bn.yml +175 -0
- data/locales/rails-i18n/bs.yml +243 -0
- data/locales/rails-i18n/ca.yml +192 -0
- data/locales/rails-i18n/cs.yml +210 -0
- data/locales/rails-i18n/cy.yml +242 -0
- data/locales/rails-i18n/da.yml +198 -0
- data/locales/rails-i18n/de-AT.yml +202 -0
- data/locales/rails-i18n/de-CH.yml +206 -0
- data/locales/rails-i18n/de.yml +202 -0
- data/locales/rails-i18n/el.yml +198 -0
- data/locales/rails-i18n/en-AU.yml +198 -0
- data/locales/rails-i18n/en-CA.yml +207 -0
- data/locales/rails-i18n/en-GB.yml +198 -0
- data/locales/rails-i18n/en-IE.yml +198 -0
- data/locales/rails-i18n/en-IN.yml +198 -0
- data/locales/rails-i18n/en-NZ.yml +198 -0
- data/locales/rails-i18n/en-US.yml +204 -0
- data/locales/rails-i18n/en-ZA.yml +204 -0
- data/locales/rails-i18n/en.yml +204 -0
- data/locales/rails-i18n/eo.yml +194 -0
- data/locales/rails-i18n/es-419.yml +207 -0
- data/locales/rails-i18n/es-AR.yml +198 -0
- data/locales/rails-i18n/es-CL.yml +192 -0
- data/locales/rails-i18n/es-CO.yml +198 -0
- data/locales/rails-i18n/es-CR.yml +198 -0
- data/locales/rails-i18n/es-EC.yml +204 -0
- data/locales/rails-i18n/es-MX.yml +204 -0
- data/locales/rails-i18n/es-PA.yml +204 -0
- data/locales/rails-i18n/es-PE.yml +177 -0
- data/locales/rails-i18n/es-US.yml +198 -0
- data/locales/rails-i18n/es-VE.yml +198 -0
- data/locales/rails-i18n/es.yml +192 -0
- data/locales/rails-i18n/et.yml +192 -0
- data/locales/rails-i18n/eu.yml +192 -0
- data/locales/rails-i18n/fa.yml +192 -0
- data/locales/rails-i18n/fi.yml +192 -0
- data/locales/rails-i18n/fr-CA.yml +200 -0
- data/locales/rails-i18n/fr-CH.yml +200 -0
- data/locales/rails-i18n/fr.yml +214 -0
- data/locales/rails-i18n/gl.yml +171 -0
- data/locales/rails-i18n/he.yml +194 -0
- data/locales/rails-i18n/hi-IN.yml +192 -0
- data/locales/rails-i18n/hi.yml +192 -0
- data/locales/rails-i18n/hr.yml +236 -0
- data/locales/rails-i18n/hu.yml +192 -0
- data/locales/rails-i18n/id.yml +193 -0
- data/locales/rails-i18n/is.yml +212 -0
- data/locales/rails-i18n/iso-639-2/csb.yml +203 -0
- data/locales/rails-i18n/iso-639-2/dsb.yml +208 -0
- data/locales/rails-i18n/iso-639-2/fur.yml +192 -0
- data/locales/rails-i18n/iso-639-2/gsw-CH.yml +196 -0
- data/locales/rails-i18n/iso-639-2/hsb.yml +207 -0
- data/locales/rails-i18n/iso-639-2/pap-AW.yml +205 -0
- data/locales/rails-i18n/iso-639-2/pap-CW.yml +205 -0
- data/locales/rails-i18n/iso-639-2/scr.yml +236 -0
- data/locales/rails-i18n/it-CH.yml +198 -0
- data/locales/rails-i18n/it.yml +204 -0
- data/locales/rails-i18n/ja.yml +194 -0
- data/locales/rails-i18n/km.yml +54 -0
- data/locales/rails-i18n/kn.yml +192 -0
- data/locales/rails-i18n/ko.yml +190 -0
- data/locales/rails-i18n/lo.yml +227 -0
- data/locales/rails-i18n/lt.yml +217 -0
- data/locales/rails-i18n/lv.yml +229 -0
- data/locales/rails-i18n/mk.yml +198 -0
- data/locales/rails-i18n/mn.yml +198 -0
- data/locales/rails-i18n/ms.yml +200 -0
- data/locales/rails-i18n/nb.yml +205 -0
- data/locales/rails-i18n/ne.yml +198 -0
- data/locales/rails-i18n/nl.yml +204 -0
- data/locales/rails-i18n/nn.yml +201 -0
- data/locales/rails-i18n/or.yml +192 -0
- data/locales/rails-i18n/pl.yml +236 -0
- data/locales/rails-i18n/pt-BR.yml +206 -0
- data/locales/rails-i18n/pt.yml +200 -0
- data/locales/rails-i18n/rm.yml +223 -0
- data/locales/rails-i18n/ro.yml +205 -0
- data/locales/rails-i18n/ru.yml +256 -0
- data/locales/rails-i18n/sk.yml +206 -0
- data/locales/rails-i18n/sl.yml +205 -0
- data/locales/rails-i18n/sr.yml +236 -0
- data/locales/rails-i18n/sv.yml +192 -0
- data/locales/rails-i18n/sw.yml +190 -0
- data/locales/rails-i18n/ta.yml +204 -0
- data/locales/rails-i18n/th.yml +166 -0
- data/locales/rails-i18n/tl.yml +224 -0
- data/locales/rails-i18n/tr.yml +204 -0
- data/locales/rails-i18n/uk.yml +250 -0
- data/locales/rails-i18n/ur.yml +204 -0
- data/locales/rails-i18n/uz.yml +250 -0
- data/locales/rails-i18n/vi.yml +198 -0
- data/locales/rails-i18n/wo.yml +198 -0
- data/locales/rails-i18n/zh-CN.yml +203 -0
- data/locales/rails-i18n/zh-HK.yml +204 -0
- data/locales/rails-i18n/zh-TW.yml +203 -0
- data/locales/rails-i18n/zh-YUE.yml +204 -0
- metadata +164 -74
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 4d45088b2c65fd274e44926886b8a70f0a645f73
|
|
4
|
+
data.tar.gz: 305ef95bcb2143c71331cfe7e702b97ee9f987f1
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 5b4fc64f2b1f57cafa02c21d2392448e64de89648a9ebe54ae06b26b43febcbf5a5b663804c3b7ff3932c5553077ae82be017490ed922ba8571e5c0aaa6ba706
|
|
7
|
+
data.tar.gz: a6ab0937bad9f67492940655bfbcf1e04e9b79c48e5a9ec5761686b25a39d1c2165d0b54d19f76cf470e6e14e8b55edc30b61a446f4ca22ea8a38f49fd423f44
|
data/LICENSE
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
Licenses
|
|
2
|
+
========================================
|
|
3
|
+
|
|
4
|
+
Amber code is copyright (c) 2015 LEAP Encrption Access Project and licensed
|
|
5
|
+
under the GNU AGPL, a copy of which is provided below.
|
|
6
|
+
|
|
7
|
+
Additionally, Amber redistributes the localization files from Rails (in
|
|
8
|
+
`amber/locales/rails-i18n/`). These files are copyright (c) 2008-2012 Sven
|
|
9
|
+
Fuchs and contributors (see https://github.com/svenfuchs/rails-
|
|
10
|
+
i18n/contributors), and distributed under an MIT license.
|
|
11
|
+
|
|
12
|
+
GNU Affero General Public License
|
|
13
|
+
========================================
|
|
14
|
+
|
|
2
15
|
Version 3, 19 November 2007
|
|
3
16
|
|
|
4
17
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
data/README.md
CHANGED
|
@@ -1,26 +1,39 @@
|
|
|
1
1
|
Amber
|
|
2
2
|
===================================
|
|
3
3
|
|
|
4
|
-
Amber is a super simple and flexible static website generator, with good
|
|
4
|
+
Amber is a super simple and flexible static website generator, with good
|
|
5
|
+
support for localization and navigation.
|
|
5
6
|
|
|
6
7
|
This is still experimental code.
|
|
7
8
|
|
|
8
|
-
Amber has much in common with other static page generators, but has several
|
|
9
|
+
Amber has much in common with other static page generators, but has several
|
|
10
|
+
features that make it unique:
|
|
9
11
|
|
|
10
12
|
* I18n: Primary focus is on very good multi-lingual and localization support.
|
|
13
|
+
By using a bunch of Apache tricks, Amber is able to create static websites
|
|
14
|
+
which work more like dynamic sites when it comes to selecting the
|
|
15
|
+
appropriate locale.
|
|
11
16
|
* Inheritance: Properties are inherited in the page hierarchy.
|
|
12
|
-
* TOC: Support for table of contents (including inserting TOC into other pages
|
|
13
|
-
|
|
17
|
+
* TOC: Support for table of contents (including inserting TOC into other pages,
|
|
18
|
+
and TOC generation from pages generated by a combination of partials and
|
|
19
|
+
different markup languages).
|
|
20
|
+
* Flexible: Ability to set custom page path aliases, render partials, rich
|
|
21
|
+
navigation, and so on.
|
|
22
|
+
|
|
23
|
+
Amber allows ERB (ruby code) in all page markup types, making it unsuitable for
|
|
24
|
+
any website where you do not trust the source of the page text.
|
|
14
25
|
|
|
15
26
|
Installation
|
|
16
27
|
---------------------------------
|
|
17
28
|
|
|
18
29
|
Installing from gem:
|
|
19
30
|
|
|
31
|
+
sudo apt-get install rubygems ruby-dev build-essential
|
|
20
32
|
sudo gem install amber
|
|
21
33
|
|
|
22
|
-
|
|
34
|
+
Alternately, you can run directly from source:
|
|
23
35
|
|
|
36
|
+
sudo apt-get install rubygems ruby-dev build-essential
|
|
24
37
|
sudo gem install bundler
|
|
25
38
|
git clone https://github.com/leapcode/amber
|
|
26
39
|
cd amber
|
|
@@ -30,7 +43,8 @@ Installing from source:
|
|
|
30
43
|
Directory structure
|
|
31
44
|
---------------------------------
|
|
32
45
|
|
|
33
|
-
A simple website has
|
|
46
|
+
A simple website has three main folders, `amber`, `pages`, and `public`. For
|
|
47
|
+
example:
|
|
34
48
|
|
|
35
49
|
mysite/
|
|
36
50
|
amber/
|
|
@@ -42,15 +56,20 @@ A simple website has this structure:
|
|
|
42
56
|
default.haml
|
|
43
57
|
pages/
|
|
44
58
|
page1.en.md
|
|
45
|
-
|
|
59
|
+
page1.de.md
|
|
46
60
|
public/
|
|
47
|
-
page1
|
|
48
|
-
|
|
61
|
+
page1/
|
|
62
|
+
en.html
|
|
63
|
+
de.html
|
|
64
|
+
|
|
65
|
+
The `public` folder is automatically generated from the `pages` folder.
|
|
66
|
+
Configuration lives in `amber`.
|
|
49
67
|
|
|
50
|
-
|
|
68
|
+
Menu
|
|
51
69
|
---------------------------------
|
|
52
70
|
|
|
53
|
-
A page does not show up in the navigation unless it appears in
|
|
71
|
+
A page does not show up in the navigation unless it appears in
|
|
72
|
+
`amber/menu.txt`.
|
|
54
73
|
|
|
55
74
|
The order in menu.txt determines the order in the navigation. For example:
|
|
56
75
|
|
|
@@ -66,7 +85,8 @@ Page hierarchy is represented by two spaces:
|
|
|
66
85
|
ddd
|
|
67
86
|
eee
|
|
68
87
|
|
|
69
|
-
The items in the menu.txt file must match the names of the pages (the filename
|
|
88
|
+
The items in the menu.txt file must match the names of the pages (the filename
|
|
89
|
+
with the suffix and locale stripped away).
|
|
70
90
|
|
|
71
91
|
Supported syntaxes
|
|
72
92
|
---------------------------------
|
|
@@ -76,13 +96,44 @@ Depending the the file extension, the file with be parsed like so:
|
|
|
76
96
|
.haml -- HAML
|
|
77
97
|
.md -- Markdown
|
|
78
98
|
.markdown -- Markdown
|
|
79
|
-
.
|
|
99
|
+
.text -- Textile
|
|
80
100
|
.textile -- Textile
|
|
81
|
-
.
|
|
101
|
+
.html -- HTML
|
|
102
|
+
|
|
103
|
+
You can use the native linking method for each markup, or you can use the
|
|
104
|
+
Amber link method:
|
|
105
|
+
|
|
106
|
+
[[label -> page-name]]
|
|
107
|
+
or
|
|
108
|
+
[[label => page-name]]
|
|
109
|
+
or
|
|
110
|
+
[[label -> absolute-url]]
|
|
111
|
+
or
|
|
112
|
+
[[page-name]]
|
|
113
|
+
|
|
114
|
+
In these examples, `page-name` can be the name of the page, optionally
|
|
115
|
+
qualified by some context. For example, if you had two pages called
|
|
116
|
+
`security`, you could link to `[[chat/security]]` or `[[email/security]]`.
|
|
117
|
+
|
|
118
|
+
This double bracket link notation will automatically find the right
|
|
119
|
+
path for the page with the specified name. Also, Amber will warn you if the page
|
|
120
|
+
name is missing and it will ensure that the link is created with the correct
|
|
121
|
+
language prefix. In haml, you can get the same effect using
|
|
122
|
+
`link 'label' => 'page-name'`
|
|
82
123
|
|
|
83
|
-
|
|
124
|
+
If writing in a right to left script, the links look like:
|
|
84
125
|
|
|
85
|
-
|
|
126
|
+
[[page-name <= label]]
|
|
127
|
+
|
|
128
|
+
But only if your text editor correctly displays right to left script.
|
|
129
|
+
|
|
130
|
+
The arrows `->` and `=>` are used interchangeably.
|
|
131
|
+
|
|
132
|
+
Previewing pages
|
|
133
|
+
-------------------------------------
|
|
134
|
+
|
|
135
|
+
To preview your site, run `amber server`. Alternately, there are a couple
|
|
136
|
+
options to preview your source files without needing to run the web server:
|
|
86
137
|
|
|
87
138
|
* Markdown preview for Chrome: https://chrome.google.com/webstore/detail/markdown-preview/jmchmkecamhbiokiopfpnfgbidieafmd
|
|
88
139
|
* Markdown preview for Sublime: https://github.com/revolunet/sublimetext-markdown-preview
|
|
@@ -91,9 +142,7 @@ There are a couple options to preview your source files without needing to run t
|
|
|
91
142
|
Setting page properties
|
|
92
143
|
---------------------------------
|
|
93
144
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
The one exception is that every file can have a "properties header". It looks like this:
|
|
145
|
+
Every file can have a "properties header". It looks like this:
|
|
97
146
|
|
|
98
147
|
@title = "A fine page"
|
|
99
148
|
@toc = false
|
|
@@ -102,6 +151,13 @@ The one exception is that every file can have a "properties header". It looks li
|
|
|
102
151
|
|
|
103
152
|
The properties start with '@' and are stripped out of the source file before it is rendered. Property header lines are evaluated as ruby. All properties are optional and they are inherited, including `@title`.
|
|
104
153
|
|
|
154
|
+
For haml files, the syntax is slightly different:
|
|
155
|
+
|
|
156
|
+
- @title = "A fine page"
|
|
157
|
+
- @toc = false
|
|
158
|
+
|
|
159
|
+
%p continue on here with body text.
|
|
160
|
+
|
|
105
161
|
Available properties:
|
|
106
162
|
|
|
107
163
|
* `@title` -- The title for the page, appearing as in an H1 on the top of the page and as the HTML title. Also used for navigation title if `@nav_title` is not set. The inline H1 title does not appear unless `@title` is explicitly set for this page (i.e. the inherited value of `@title` does not trigger the automatic H1).
|
|
@@ -112,3 +168,16 @@ Available properties:
|
|
|
112
168
|
* `@this.alias` -- Alternate paths for the page to be rendered on. May be an array. The first path will be used when linking.
|
|
113
169
|
|
|
114
170
|
To make a property none-inheritable, specify it like so: `@this.layout = 'home'`. For some properties, like `alias`, it does not make sense for the property to be inheritable.
|
|
171
|
+
|
|
172
|
+
Troubleshooting
|
|
173
|
+
-----------------------------------
|
|
174
|
+
|
|
175
|
+
If you get an error at some point like this:
|
|
176
|
+
|
|
177
|
+
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.9.1
|
|
178
|
+
|
|
179
|
+
It just means that libxml has been upgraded since the gem nokogiri was installed. To fix, run this:
|
|
180
|
+
|
|
181
|
+
sudo gem pristine nokogiri
|
|
182
|
+
|
|
183
|
+
|
data/bin/amber
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
if ARGV.include?('--debug')
|
|
4
|
-
|
|
4
|
+
if RUBY_VERSION =~ /^2/
|
|
5
|
+
require 'byebug'
|
|
6
|
+
else
|
|
7
|
+
require 'debugger'
|
|
8
|
+
end
|
|
5
9
|
end
|
|
6
10
|
|
|
7
11
|
begin
|
|
@@ -25,8 +29,10 @@ def process_command_line_arguments
|
|
|
25
29
|
when 'rebuild' then @command = ARGV.shift
|
|
26
30
|
when 'clean' then @command = 'clear'; ARGV.shift
|
|
27
31
|
when 'clear' then @command = ARGV.shift
|
|
28
|
-
when 'server' then @command = ARGV.shift
|
|
29
|
-
when '
|
|
32
|
+
when 'server' then @command = ARGV.shift; @command_arg = ARGV.shift
|
|
33
|
+
when 'apache' then @command = ARGV.shift; @command_arg = ARGV.shift
|
|
34
|
+
when 'version' then version
|
|
35
|
+
when '--version' then version
|
|
30
36
|
when '--debug' then ARGV.shift
|
|
31
37
|
when '--help' then usage
|
|
32
38
|
when 'help' then usage
|
|
@@ -45,21 +51,28 @@ def usage(msg=nil)
|
|
|
45
51
|
$stderr.puts("Usage: #{File.basename($0)} [OPTIONS] COMMAND")
|
|
46
52
|
$stderr.puts
|
|
47
53
|
$stderr.puts("COMMAND may be one or more of:
|
|
48
|
-
init DIRECTORY
|
|
49
|
-
build
|
|
50
|
-
rebuild
|
|
51
|
-
server
|
|
52
|
-
clear
|
|
53
|
-
clean
|
|
54
|
-
|
|
54
|
+
init DIRECTORY -- Create a new amber site in DIRECTORY.
|
|
55
|
+
build -- Render static html pages.
|
|
56
|
+
rebuild -- Runs `clear` then `build`.
|
|
57
|
+
server [[HOST][:PORT]] -- Runs mini web server bound to HOST:PORT (defaults to #{Amber::DEFAULT_HOST}:#{Amber::DEFAULT_PORT}).
|
|
58
|
+
clear -- Erase static HTML pages.
|
|
59
|
+
clean -- Alias for `clear`.
|
|
60
|
+
apache DIRECTORY -- Prints out appropriate apache2 config for the given DIRECTORY.
|
|
61
|
+
help -- This message.
|
|
62
|
+
version -- Print version and exit.")
|
|
55
63
|
$stderr.puts
|
|
56
64
|
$stderr.puts("OPTIONS may be one or more of:
|
|
57
|
-
-v
|
|
58
|
-
--
|
|
59
|
-
--
|
|
65
|
+
-v -- Run in verbose mode.
|
|
66
|
+
--version -- Print version and exit.
|
|
67
|
+
--debug -- Enable debugger.")
|
|
60
68
|
exit(2)
|
|
61
69
|
end
|
|
62
70
|
|
|
71
|
+
def version
|
|
72
|
+
puts Amber::VERSION
|
|
73
|
+
exit
|
|
74
|
+
end
|
|
75
|
+
|
|
63
76
|
def main
|
|
64
77
|
process_command_line_arguments
|
|
65
78
|
if @verbose
|
data/lib/amber.rb
CHANGED
|
@@ -1,60 +1,45 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
|
|
3
|
+
# enforce UTF8 as the default, even if LANG environment
|
|
4
|
+
# variable says otherwise.
|
|
5
|
+
Encoding.default_internal = Encoding::UTF_8
|
|
6
|
+
Encoding.default_external = Encoding::UTF_8
|
|
7
|
+
|
|
3
8
|
require 'logger'
|
|
4
|
-
require 'i18n'
|
|
5
|
-
require 'i18n/backend/fallbacks'
|
|
6
|
-
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
+
# ensure that we load sass from a gem, not the sass included in some
|
|
11
|
+
# versions of haml.
|
|
12
|
+
gem 'sass'
|
|
13
|
+
require 'sass'
|
|
14
|
+
require 'haml'
|
|
10
15
|
|
|
11
16
|
module Amber
|
|
12
17
|
|
|
13
18
|
class MissingTemplate < StandardError
|
|
14
19
|
end
|
|
15
20
|
|
|
16
|
-
#
|
|
17
|
-
# Languages that might possibly be supported.
|
|
18
|
-
#
|
|
19
|
-
# https://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers
|
|
20
|
-
#
|
|
21
|
-
POSSIBLE_LANGUAGES = {
|
|
22
|
-
:zh => ['中文', 'zh', 1, false],
|
|
23
|
-
:es => ['Español', 'es', 2, false],
|
|
24
|
-
:en => ['English', 'en', 3, false],
|
|
25
|
-
:hi => ['Hindi', 'hi', 4, false],
|
|
26
|
-
:ar => ['العربية', 'ar', 5, true],
|
|
27
|
-
:pt => ['Português', 'pt', 6, false],
|
|
28
|
-
:ru => ['Pyccĸий', 'ru', 7, false],
|
|
29
|
-
:de => ['Deutsch', 'de', 8, false],
|
|
30
|
-
:fr => ['Français', 'fr', 10, false],
|
|
31
|
-
:it => ['Italiano', 'it', 11, false],
|
|
32
|
-
:el => ['Ελληνικά', 'el', 20, false],
|
|
33
|
-
:ca => ['Català', 'ca', 101, false]
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
# Although everywhere else we use symbols for locales, this array should be strings:
|
|
37
|
-
POSSIBLE_LANGUAGE_CODES = POSSIBLE_LANGUAGES.keys.map(&:to_s)
|
|
38
|
-
|
|
39
21
|
# Possible page suffixes. Only files with these suffixes are treated as pages
|
|
40
|
-
PAGE_SUFFIXES = %w(haml md markdown text textile rst html)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
22
|
+
PAGE_SUFFIXES = %w(haml md markdown text textile rst html html.haml)
|
|
23
|
+
|
|
24
|
+
DEFAULT_HOST = '127.0.0.1'
|
|
25
|
+
DEFAULT_PORT = '8000'
|
|
26
|
+
|
|
27
|
+
def self.env
|
|
28
|
+
if defined?(TESTING) && TESTING==true
|
|
29
|
+
:test
|
|
30
|
+
elsif defined?(Amber::Server)
|
|
31
|
+
:developmet
|
|
32
|
+
else
|
|
33
|
+
:production
|
|
50
34
|
end
|
|
51
35
|
end
|
|
52
36
|
|
|
53
37
|
end
|
|
54
38
|
|
|
39
|
+
require 'amber/version'
|
|
55
40
|
require 'amber/cli'
|
|
56
|
-
require 'amber/server'
|
|
57
41
|
require 'amber/logger'
|
|
42
|
+
require 'amber/i18n'
|
|
58
43
|
|
|
59
44
|
require 'amber/menu'
|
|
60
45
|
require 'amber/site'
|
|
@@ -74,3 +59,4 @@ require 'amber/render/asset'
|
|
|
74
59
|
require 'amber/render/autolink'
|
|
75
60
|
require 'amber/render/bracketlink'
|
|
76
61
|
require 'amber/render/table_of_contents'
|
|
62
|
+
require 'amber/render/apache'
|
data/lib/amber/cli.rb
CHANGED
|
@@ -40,6 +40,7 @@ module Amber
|
|
|
40
40
|
site = Site.new(@root)
|
|
41
41
|
site.continue_on_error = false
|
|
42
42
|
site.load_pages
|
|
43
|
+
FileUtils.mkdir_p(site.dest_dir) unless File.exists?(site.dest_dir)
|
|
43
44
|
gitkeep = File.exists?(File.join(site.dest_dir, '.gitkeep'))
|
|
44
45
|
temp_render = File.join(File.dirname(site.dest_dir), 'public-tmp')
|
|
45
46
|
temp_old_pages = File.join(File.dirname(site.dest_dir), 'remove-me')
|
|
@@ -62,8 +63,31 @@ module Amber
|
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
def server(options)
|
|
66
|
+
require 'amber/server'
|
|
67
|
+
host = nil
|
|
68
|
+
port = nil
|
|
69
|
+
if options[:arg]
|
|
70
|
+
host, port = options[:arg].split(':')
|
|
71
|
+
end
|
|
72
|
+
if host.nil? || host.empty?
|
|
73
|
+
host = DEFAULT_HOST
|
|
74
|
+
end
|
|
75
|
+
if port.nil? || port.empty?
|
|
76
|
+
port = DEFAULT_PORT
|
|
77
|
+
end
|
|
65
78
|
site = Site.new(@root)
|
|
66
|
-
Amber::Server.start(:port =>
|
|
79
|
+
Amber::Server.start(:port => port, :host => host, :site => site)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def apache(options)
|
|
83
|
+
site = Site.new(@root)
|
|
84
|
+
directory = options[:arg]
|
|
85
|
+
unless directory
|
|
86
|
+
puts "Missing DIRECTORY argument"
|
|
87
|
+
exit 1
|
|
88
|
+
end
|
|
89
|
+
directory = directory.gsub(%r{^/|/$}, '')
|
|
90
|
+
Amber::Render::Apache.echo_config(site, directory)
|
|
67
91
|
end
|
|
68
92
|
|
|
69
93
|
private
|
data/lib/amber/i18n.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
require 'i18n'
|
|
4
|
+
require 'i18n/backend/fallbacks'
|
|
5
|
+
|
|
6
|
+
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
|
7
|
+
I18n.enforce_available_locales = false
|
|
8
|
+
|
|
9
|
+
I18n.load_path += Dir[File.join(File.expand_path('../../../locales', __FILE__), '/**/*.{yml,yaml}')]
|
|
10
|
+
|
|
11
|
+
module Amber
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# Languages that might possibly be supported.
|
|
15
|
+
#
|
|
16
|
+
# https://en.wikipedia.org/wiki/List_of_languages_by_number_of_native_speakers
|
|
17
|
+
#
|
|
18
|
+
POSSIBLE_LANGUAGES = {
|
|
19
|
+
:zh => ['中文', 'zh', 1, false], # Chinese
|
|
20
|
+
:es => ['Español', 'es', 2, false],
|
|
21
|
+
:en => ['English', 'en', 3, false],
|
|
22
|
+
:hi => ['Hindi', 'hi', 4, false],
|
|
23
|
+
:ar => ['العربية', 'ar', 5, true], # Arabic
|
|
24
|
+
:pt => ['Português', 'pt', 6, false],
|
|
25
|
+
:ru => ['Pyccĸий', 'ru', 7, false], # Russian
|
|
26
|
+
:ja => ['日本語', 'ja', 8, false], # Japanese
|
|
27
|
+
:pa => ['ਪੰਜਾਬੀ', 'pa', 9, false], # Punjabi
|
|
28
|
+
:de => ['Deutsch', 'de', 10, false],
|
|
29
|
+
:vi => ['Tiếng Việt','vi', 11, false], # Vietnamese
|
|
30
|
+
:fr => ['Français', 'fr', 12, false],
|
|
31
|
+
:ur => ['اُردُو', 'ur', 13, false], # Urdu
|
|
32
|
+
:fa => ['فارسی', 'fa', 14, false], # Farsi / Persian
|
|
33
|
+
:tr => ['Türkçe', 'tr', 15, false], # Turkish
|
|
34
|
+
:it => ['Italiano', 'it', 16, false],
|
|
35
|
+
:el => ['Ελληνικά', 'el', 17, false], # Greek
|
|
36
|
+
:pl => ['Polski', 'pl', 18, false], # Polish
|
|
37
|
+
:ca => ['Català', 'ca', 19, false]
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# Although everywhere else we use symbols for locales, this array should be strings:
|
|
41
|
+
POSSIBLE_LANGUAGE_CODES = POSSIBLE_LANGUAGES.keys.map(&:to_s)
|
|
42
|
+
|
|
43
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Amber
|
|
2
|
+
module Render
|
|
3
|
+
class Apache
|
|
4
|
+
|
|
5
|
+
def self.write_htaccess(site, src_dir, dst_dir)
|
|
6
|
+
src_htaccess_file = File.join(src_dir, '.htaccess')
|
|
7
|
+
dst_htaccess_file = File.join(dst_dir, '.htaccess')
|
|
8
|
+
template = Tilt::ERBTemplate.new(template_path("htaccess.erb"))
|
|
9
|
+
|
|
10
|
+
tail_content = nil
|
|
11
|
+
if File.exists?(src_htaccess_file)
|
|
12
|
+
tail_content = File.read(src_htaccess_file)
|
|
13
|
+
end
|
|
14
|
+
File.open(dst_htaccess_file, 'w', :encoding => 'UTF-8') do |f|
|
|
15
|
+
f.write template.render(context_object(:site => site))
|
|
16
|
+
if tail_content
|
|
17
|
+
f.write "\n\n"
|
|
18
|
+
f.write tail_content
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.echo_config(site, directory)
|
|
24
|
+
template = Tilt::ERBTemplate.new(
|
|
25
|
+
site.path_prefix ? template_path('apache_config_with_prefix.erb') : template_path('apache_config.erb')
|
|
26
|
+
)
|
|
27
|
+
puts template.render(context_object(:site => site, :directory => directory))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.context_object(variables)
|
|
31
|
+
object = Object.new
|
|
32
|
+
variables.each do |name, value|
|
|
33
|
+
object.instance_variable_set("@#{name}", value)
|
|
34
|
+
end
|
|
35
|
+
object
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.template_path(filename)
|
|
39
|
+
File.expand_path("../templates/#{filename}", File.dirname(__FILE__))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|