usmu 0.2.2-java → 0.3.0-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e8c19fc3b2ae3734dd39394fc699a10333b7226
4
- data.tar.gz: a36c3f979f669bd89a31962bb0ab71b770b6767a
3
+ metadata.gz: dde61bbb4fa8f559107f82400f0b2b029c730833
4
+ data.tar.gz: 300f0c268563caa186ade7f41d84a12a2d72c4fe
5
5
  SHA512:
6
- metadata.gz: 7be6f1626c51c72e169a26e1e66ba36272126450fcb0bfab738f4452c6208f4cf1bf4f16093b06c7a71ff5861fd8e96e46d73849b75a5eb4b67bdb2e4537aafe
7
- data.tar.gz: cb155deec549610d11dda459249894a7c94c26e44a7f07089871934620094ddab809895c7a6cd3060ddf3cff110b410b7264200cdeedf382e8411e64cad950c0
6
+ metadata.gz: 7bdfddce16f66bad2dd2857c1e1c59f4233432c4f5e52eb3d2452aff9dca40c98a00778b49b848b5dda8baba92ffd148a8a47748cd090d68c70ccabd8f199045
7
+ data.tar.gz: b528d3ccb26688545f2c3ea277edfab575abe72d266be8fc361d8fb1a1762c360d30cc905a8842da20232a8b2ab85d530a898f67804f9b8517f3e81527a0ec97
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
+ /.sass-cache
3
4
  /Gemfile*.lock
4
5
  /_yardoc/
5
6
  /test/coverage/
@@ -7,6 +8,7 @@
7
8
  /pkg/
8
9
  /spec/reports/
9
10
  /tmp/
11
+ /vendor
10
12
  *.bundle
11
13
  *.so
12
14
  *.o
data/.travis.yml CHANGED
@@ -4,6 +4,7 @@ rvm:
4
4
  - 1.9.3
5
5
  - 2.0
6
6
  - 2.1
7
+ - 2.2
7
8
  - ruby-head
8
9
  - mruby-head
9
10
  - rbx-2.1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,56 @@
1
1
  # Usmu Change Log
2
2
 
3
+ ## 0.3.0
4
+
5
+ Matthew Scharley <matt.scharley@gmail.com>
6
+
7
+ * Ignore vendored gems (5ed00eda230ad69d727d61197a2eff6269bcc640)
8
+ * Bump CHANGELOG to 0.2.2 (daea8c79c04acfd7048aa7f801c9e34462e4a06d)
9
+ * Fix a bug with #load_configuration (ab08a884c346fcbca784bf229b42e65bbff2b63a)
10
+ * Enable rvm 2.2 for the latest and greatest (e28532f0fe25f46c03e18fd9e6a2dd05c388647e)
11
+ * [\[\#12\]][GH-12] Fix layout loop issues finally (b3164c5bd0374837c56c1cab6554a2a7b7b207ef)
12
+ * Add libnotify for guard (e51971a22b7d57bcb892e90fa2feb89571b2311b)
13
+ * [\[\#14\]][GH-14] Don't list directories in Configuration#get_files (e56d81d7bfeae9d3312c84f2cfe3d03e268ca738)
14
+ * [\[\#17\]][GH-17] Fix Sass processing (5b00cc3f29e32ce31d8a13c2979d953509b3a334)
15
+ * [\[\#13\]][GH-13] Add page metadata to parent layouts (c2da294e1f19e6404df178ee650c3818cc0f3846)
16
+ * Add a Sass partials exclude to default init site (4f70d5b1b5958b6c56338b8d077711c780c85763)
17
+
18
+ ## 0.2.2
19
+
20
+ Matthew Scharley <matt.scharley@gmail.com>
21
+
22
+ * Bump version to 0.3.0.dev for further dev (896cbde8191b8123a280b5a2c96af524d8055d07)
23
+ * Ignore CR's in generated site to tame diff on Windows (839ab4bfea0bea1a1932b569b636540172d3e633)
24
+ * Setup logging properly in Usmu::Plugin::Core (6b4f6cbc133830dc93248d3bc4fb71a2c2aab5a9)
25
+ * Allow --trace from commander to function properly (815bb4f12ef7128cb404fe93745c130b990e073d)
26
+ * [\[GH-8\]][GH-8] Add an init command (feb3fd659c0180b572449dbdc186d4ada5fb6c61)
27
+ * [\[GH-8\]][GH-8] Add tests for the init command (5bbf4031708278b27b7779d170a2a54ca708dd9f)
28
+ * Clean up the tmp folder with `rake clean` (2efe4a713fe75569d292bc17801dcd9b1ea2aa02)
29
+ * Always use --trace with the acceptance tests (cf9cacccb9faef248d52053c90a0be92f60b7704)
30
+ * Fix bug in init command where directories could be uncreated before usage (c53cf247923c48a6d6f84581fdf3e8845ad9d4da)
31
+ * Update Rubinius runs for Travis (688f32a76a08a95f261fa6f35f12bce23a0daa39)
32
+ * Remove the rbx-head exclude (6ded194e282909f9e7672e645f6c7b626f2ebb1c)
33
+ * Remove rbx-2.0 from Travis again - unsupported (de6d536ac04f16352878e92cc7561c0f9a145f54)
34
+ * Allow rbx-2.3 (7de8f4ca7fc27647edf9ac1e59d138ec2cd8ff1e)
35
+ * Add jruby 2.0 runs (e865e35445ccffb91e20aebf5c17a948ab38f336)
36
+ * Fix matrix excludes for jruby (9fa82f64cddb6096e891c418790aadddb00d58a8)
37
+ * Fix matrix excludes (again) (hopefully) (4b3dd6370369310219cdc38d9c2ed1169ee28eca)
38
+ * Last run at fixing the jruby 2.0 stuff (febb399e8cc5facd29cc1d164a0bddf75c953741)
39
+ * Greatly simplify travis.yml using matrix include instead of exclude (5ad500f8ec428be5d86c400006735f8b4cf1c61f)
40
+ * Fix gemfile name because I'm a derp (10e73938565049e8ff323da99fca35d024a34134)
41
+ * Add a changelog (ea82ed9826517920c7e39d73a5e3df167f9512b4)
42
+ * Enable rbx-2.4 build for testing (34fd5415af64ce0fafad3805188b34b99119f37e)
43
+ * Track mruby compatibility (163cd5a5956f39a1e46fdf9c381c961d2d21e52d)
44
+ * Officially support Rubinius 2.3 (2abe1da65e4f65d065d9d8f084bffae607045043)
45
+ * Update compatibility information (1be9e1cee10f3aab20f514195dfbc17deb8138f4)
46
+ * Bump slim to 3.0 (f258e53bb3f04187406a1ba0736c53be4105ee09)
47
+ * Massive refactor to create the Usmu::Template namespace (425956dd04b199e5ac32582ed5856d01b6251e35)
48
+ * Add an irb task to rake (e7506c686696344b506da2df8705d918bf1b0ba0)
49
+ * [\[\#9\]][GH-9] Add tests for includes in slim (95f4c4992e4984fcdd95c0ba66805714da215cfc)
50
+ * [\[\#9\]][GH-9] Implement includes (5a4e69aa8b45fac4a697d56814177023f052c585)
51
+ * Remove RBX 2.3 again. (b8675c07d0fe066c466144c27e690f1863a88888)
52
+ * Release 0.2.2 (986f611b167a0503108d41ac0a115e38d6aac2f9)
53
+
3
54
  ## 0.2.1
4
55
 
5
56
  Matthew Scharley <matt.scharley@gmail.com>
@@ -27,10 +78,10 @@ Matthew Scharley <matt.scharley@gmail.com>
27
78
  * Remove cucumber from the CI task (d4094db005db5205542eb8256e86f01d9cd49d05)
28
79
  * Allow the rspec rake task to find it's own spec files (35d6f7e4486f14034544884090b5cccfd7bd82ad)
29
80
  * Use Redcarpet 3.2! (5c7a9d34f5ec2c12089b1e045e174f26f34877f2)
30
- * [GH-7] Allow for excluding files via usmu.conf (da0f1123316ce1cede23a63cea8e6c46c3a17a01)
81
+ * [\[GH-7\]][GH-7] Allow for excluding files via usmu.conf (da0f1123316ce1cede23a63cea8e6c46c3a17a01)
31
82
  * Add one more guard test on exclude globs (143460ea5f5427845e01119a8aba039207382a1b)
32
- * [GH-5] Add an initial pass at a plugin system (73588da4bfaf03fa27a47747b56f6e31d95c8704)
33
- * [GH-5] Transition to commander instead of trollop and make `generate` an official command (1aaaf43c0884c70980af3b7e6fcaa8ce57f7474c)
83
+ * [\[GH-5\]][GH-5] Add an initial pass at a plugin system (73588da4bfaf03fa27a47747b56f6e31d95c8704)
84
+ * [\[GH-5\]][GH-5] Transition to commander instead of trollop and make `generate` an official command (1aaaf43c0884c70980af3b7e6fcaa8ce57f7474c)
34
85
  * 1.9.3 compatibility (cba51ad465576ac542111d200cfcbb62835c097c)
35
86
  * Re-enable 1.9.3 CI and add some compat notes to the readme (cf34053aaaf6a85752ec8be70f7c9969a89990d9)
36
87
  * Bump to 0.2.0 release (7e7dde04c180b5ae63268db647ba45ef63a6b3f3)
@@ -80,3 +131,12 @@ Matthew Scharley <matt.scharley@gmail.com>
80
131
  * Small stylistic change (ae008aa5492b2463774e4e4659d90666059b45e0)
81
132
  * Add new custom rake tasks for building gems and fix a few small issues with the specs (5b1a4241cd9f31f39179ffaad49f7155617c0e6f)
82
133
  * Bump to full 0.1.0 release (fb91c2b54f79eeaeb615f98f874c990e4cdddfd3)
134
+
135
+ [GH-5]: https://github.com/usmu/usmu/issues/5
136
+ [GH-7]: https://github.com/usmu/usmu/issues/7
137
+ [GH-8]: https://github.com/usmu/usmu/issues/8
138
+ [GH-9]: https://github.com/usmu/usmu/issues/9
139
+ [GH-12]: https://github.com/usmu/usmu/issues/12
140
+ [GH-13]: https://github.com/usmu/usmu/issues/13
141
+ [GH-14]: https://github.com/usmu/usmu/issues/14
142
+ [GH-17]: https://github.com/usmu/usmu/issues/17
@@ -126,9 +126,11 @@ module Usmu
126
126
  # @param [Boolean] layout is this directory a layouts_path
127
127
  # @return [Array<Usmu::Layout>, Array<Usmu::StaticFile>] Either an array of Layouts or StaticFiles in the directory
128
128
  def get_files(directory)
129
- Dir["#{directory}/**/{*,.??*}"].select {|f| !f.match(/\.meta.yml$/) }.map do |f|
130
- f[(directory.length + 1)..f.length]
131
- end.select {|f| not excluded? f}
129
+ Dir["#{directory}/**/{*,.??*}"].
130
+ select {|f| not File.directory? f }.
131
+ select {|f| !f.match(/\.meta.yml$/) }.
132
+ map {|f| f[(directory.length + 1)..f.length] }.
133
+ select {|f| not excluded? f }
132
134
  end
133
135
  end
134
136
  end
@@ -56,9 +56,11 @@ module Usmu
56
56
  def generate
57
57
  @log.info("Source: #{@configuration.source_path}")
58
58
  @log.info("Destination: #{@configuration.destination_path}")
59
+ @log.info('')
59
60
 
60
61
  renderables.each do |page|
61
62
  @log.success("creating #{page.output_filename}...")
63
+ @log.debug("Rendering #{page.output_filename} from #{page.name}")
62
64
  file = File.join(@configuration.destination_path, page.output_filename)
63
65
  directory = File.dirname(file)
64
66
 
@@ -46,6 +46,12 @@ module Usmu
46
46
 
47
47
  @parent = nil
48
48
  @parent = Layout.find_layout(configuration, self.metadata['layout'])
49
+
50
+ # Don't use the parent if it would result in weirdness
51
+ unless @parent.nil?
52
+ @parent = nil unless
53
+ output_extension == @parent.output_extension || output_extension.nil? || @parent.output_extension.nil?
54
+ end
49
55
  end
50
56
 
51
57
  # @!attribute [r] metadata
@@ -62,13 +68,22 @@ module Usmu
62
68
  end
63
69
  end
64
70
 
71
+ # This is a shortcut to accessing metadata.
72
+ #
73
+ # @see #metadata
74
+ def [](index)
75
+ metadata[index]
76
+ end
77
+
65
78
  # Renders the file with any templating language required and returns the result
66
79
  #
67
80
  # @param variables [Hash] Variables to be used in the template.
68
81
  # @return [String] The rendered file.
69
82
  def render(variables = {})
70
- content = template_class.new("#{@name}.#{@type}", 1, @configuration[provider_name]) { @content }.
83
+ template_config = add_template_defaults(@configuration[provider_name] || {}, provider_name)
84
+ content = template_class.new("#{@name}", 1, template_config) { @content }.
71
85
  render(helpers, get_variables(variables))
86
+
72
87
  has_cr = content.index("\r")
73
88
  content += (has_cr ? "\r\n" : "\n") if content[-1] != "\n"
74
89
  if @parent.nil?
@@ -122,19 +137,33 @@ module Usmu
122
137
  # that name is nilable and can also be passed in as an Usmu::Template::Layout already for testing purposes.
123
138
  # @return [Usmu::Layout]
124
139
  def self.find_layout(configuration, name)
125
- if name === 'none'
126
- nil
140
+ return nil if name.nil?
141
+
142
+ @layout_history = @layout_history || {}
143
+ @layout_history[configuration] = @layout_history[configuration] || {}
144
+ if @layout_history[configuration][name]
145
+ Logging.logger[self].debug("Layout loop detected. Current loaded layouts: #{@layout_history[configuration].inspect}")
146
+ return nil
147
+ else
148
+ Logging.logger[self].debug("Loading layout '#{name}'")
149
+ @layout_history[configuration][name] = true
150
+ end
151
+
152
+ ret = nil
153
+ if name === 'none' || name.nil?
127
154
  elsif name.class.name == 'String'
128
155
  Dir["#{configuration.layouts_path}/#{name}.*"].each do |f|
129
156
  filename = File.basename(f)
130
157
  if filename != "#{name}.meta.yml"
131
- return new(configuration, f[(configuration.layouts_path.length + 1)..f.length])
158
+ ret = new(configuration, f[(configuration.layouts_path.length + 1)..f.length])
132
159
  end
133
160
  end
134
- nil
135
161
  else
136
- name
162
+ ret = name
137
163
  end
164
+
165
+ @layout_history[configuration][name] = nil
166
+ return ret
138
167
  end
139
168
 
140
169
  # Tests if a given file is a valid Tilt template based on the filename.
@@ -151,6 +180,17 @@ module Usmu
151
180
 
152
181
  protected
153
182
 
183
+ # @!attribute [r] parent
184
+ # @return [Usmu::Template::Layout] The template acting as a wrapper for this template, if any
185
+ attr_reader :parent
186
+
187
+ # Allows for protected level direct access to the metadata store.
188
+ #
189
+ # @see #metadata
190
+ def []=(index, value)
191
+ @metadata[index] = value
192
+ end
193
+
154
194
  # @!attribute [r] template_class
155
195
  # @return [Tilt::Template] the Tilt template engine for this layout
156
196
  def template_class
@@ -185,6 +225,22 @@ module Usmu
185
225
  @helpers ||= Usmu::Template::Helpers.new(@configuration)
186
226
  end
187
227
 
228
+ # Adds defaults for the given generator engine
229
+ #
230
+ # @param [Hash] overrides A hash of options provided by the user
231
+ # @param [String] engine The name of the rendering engine
232
+ # @return [Hash] Template options to pass into the engine
233
+ def add_template_defaults(overrides, engine)
234
+ case engine
235
+ when 'sass'
236
+ {
237
+ :load_paths => [@configuration.source_path + '/' + File.dirname(@name)]
238
+ }.deep_merge!(overrides)
239
+ else
240
+ overrides
241
+ end
242
+ end
243
+
188
244
  private
189
245
 
190
246
  # Utility function which collates variables to pass to the template engine.
@@ -4,6 +4,23 @@ module Usmu
4
4
  module Template
5
5
  # Represents a page in the source directory of the website.
6
6
  class Page < Layout
7
+
8
+ # @param configuration [Usmu::Configuration] The configuration for the website we're generating.
9
+ # @param name [String] The name of the file in the source directory.
10
+ # @param type [String] The type of template to use with the file. Used for testing purposes.
11
+ # @param content [String] The content of the file. Used for testing purposes.
12
+ # @param metadata [String] The metadata for the file. Used for testing purposes.
13
+ def initialize(configuration, name, type = nil, content = nil, metadata = nil)
14
+ super(configuration, name, type, content, metadata)
15
+
16
+ current_parent = parent
17
+ until current_parent.nil?
18
+ @log.debug("Injecting page #{name} into #{current_parent.name}")
19
+ current_parent['page'] = self
20
+ current_parent = current_parent.parent
21
+ end
22
+ end
23
+
7
24
  protected
8
25
 
9
26
  # @!attribute [r] content_path
@@ -5,8 +5,6 @@ module Usmu
5
5
  # Represents a static file which should be transferred to the destination unchanged. This also acts as the base
6
6
  # class for all layouts and page types. The basic interface defined here is used to process all types of files.
7
7
  class StaticFile
8
- @log = Logging.logger[self]
9
-
10
8
  # @!attribute [r] name
11
9
  # @return [String] the name of the file in the source directory
12
10
  attr_reader :name
@@ -18,6 +16,9 @@ module Usmu
18
16
  # @param content [String] The content of the file. Used for testing purposes.
19
17
  # @param metadata [String] The metadata for the file. Used for testing purposes.
20
18
  def initialize(configuration, name, type = nil, content = nil, metadata = nil)
19
+ @log = Logging.logger[self]
20
+ @log.debug("Creating <##{self.class.name} @name=\"#{name}\">")
21
+
21
22
  @configuration = configuration
22
23
  @name = name
23
24
  @type = type
@@ -37,6 +37,10 @@ module Usmu
37
37
  @commander.run!
38
38
  end
39
39
 
40
+ # Load a configuration from a file
41
+ #
42
+ # @param [String] config Name of configuration file to load
43
+ # @return [Usmu::Configuration] the configuration for the site we will generate.
40
44
  def load_configuration(config)
41
45
  @log.info("Usmu v#{Usmu::VERSION}")
42
46
  @log.info('')
@@ -48,6 +52,7 @@ module Usmu
48
52
  @log.fatal("Unable to find configuration file at #{config}")
49
53
  raise
50
54
  end
55
+ @configuration
51
56
  end
52
57
  end
53
58
  end
data/lib/usmu/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
2
  module Usmu
3
3
  # The current version string for the gem
4
- VERSION = '0.2.2'
4
+ VERSION = '0.3.0'
5
5
  end
@@ -1,3 +1,6 @@
1
1
  ---
2
2
 
3
3
  title: Example site
4
+
5
+ exclude:
6
+ - '**/_*.s[ca]ss
@@ -0,0 +1,2 @@
1
+ body {
2
+ color: #000; }
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Default Title | Testing website</title>
4
+ <title>Index page | Testing website</title>
5
5
  </head>
6
6
  <body>
7
7
  <div id="content">
@@ -0,0 +1,18 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Default Title | Testing website</title>
5
+ </head>
6
+ <body>
7
+ <div id="content">
8
+ <h1>Hello world!</h1>
9
+
10
+ <p>This is my first post.</p>
11
+
12
+ </div>
13
+ <footer>
14
+ Copyright &copy; Testers Inc.
15
+ </footer>
16
+
17
+ </body>
18
+ </html>
@@ -0,0 +1 @@
1
+ $color: #000;
@@ -0,0 +1,5 @@
1
+ @import 'partial';
2
+
3
+ body {
4
+ color: $color;
5
+ }
@@ -0,0 +1,3 @@
1
+ # Hello world!
2
+
3
+ This is my first post.
@@ -1,7 +1,7 @@
1
1
  doctype html
2
2
  html
3
3
  head
4
- title #{title} | #{site['title']}
4
+ title #{page['title']} | #{site['title']}
5
5
 
6
6
  body
7
7
  #content
data/test/site/usmu.yml CHANGED
@@ -4,8 +4,11 @@ source: content
4
4
  destination: site
5
5
  title: Testing website
6
6
 
7
+ exclude:
8
+ - "**/_*.s[ac]ss"
9
+
7
10
  default meta:
8
- title: Test website
11
+ title: Default Title
9
12
  layout: html
10
13
 
11
14
  slim:
@@ -15,7 +15,7 @@ step 'I run usmu with the arguments :args' do |args|
15
15
  end
16
16
 
17
17
  step 'the directory :destination should match :test_folder' do |destination, test_folder|
18
- run = %W{diff -qr --strip-trailing-cr #{destination} #{test_folder}}
18
+ run = %W{diff -ur --strip-trailing-cr #{test_folder} #{destination}}
19
19
  Open3.popen2e(*run) do |i, o, t|
20
20
  output = run.join(' ') + "\n" + o.read
21
21
  fail output if t.value != 0
@@ -11,12 +11,12 @@ RSpec.describe Usmu::SiteGenerator do
11
11
 
12
12
  it 'should have a list of renderable items' do
13
13
  expect(generator.respond_to? :renderables).to eq(true)
14
- expect(generator.renderables.map {|r| r.name}.sort).to eq(%w{.dotfiletest.txt default.md embedded.md index.md robots.txt})
14
+ expect(generator.renderables.map {|r| r.name}.sort).to eq(%w{.dotfiletest.txt css/app.scss default.md embedded.md index.md posts/test-post.md robots.txt})
15
15
  end
16
16
 
17
17
  it 'should have pages' do
18
18
  expect(generator.respond_to? :pages).to eq(true)
19
- expect(generator.pages.map {|p| p.name}.sort).to eq(%w{default.md embedded.md index.md})
19
+ expect(generator.pages.map {|p| p.name}.sort).to eq(%w{css/app.scss default.md embedded.md index.md posts/test-post.md})
20
20
  end
21
21
 
22
22
  it 'should have files' do
@@ -24,6 +24,11 @@ RSpec.describe Usmu::SiteGenerator do
24
24
  expect(generator.files.map {|f| f.name}.sort).to eq(%w{.dotfiletest.txt robots.txt})
25
25
  end
26
26
 
27
+ it 'should not list directories' do
28
+ expect(generator.respond_to? :files).to eq(true)
29
+ expect(generator.files.select {|f| f.name == 'posts'}.length).to eq(0)
30
+ end
31
+
27
32
  it 'should be able to generate a site' do
28
33
  expect(generator.respond_to? :generate).to eq(true)
29
34
  end
@@ -173,6 +173,15 @@ RSpec.shared_examples 'an embeddable layout' do
173
173
  EOF
174
174
  end
175
175
 
176
+ it 'only uses a wrapper layout if the output types match' do
177
+ parent = described_class.new(empty_configuration, 'html.slim', 'slim', wrapper, {})
178
+ layout = described_class.new(empty_configuration, 'app.scss', 'scss', 'body { color: #000; }', {'layout' => parent})
179
+ expect(layout.render({'content' => ''})).to eq(<<-EOF)
180
+ body {
181
+ color: #000; }
182
+ EOF
183
+ end
184
+
176
185
  context 'and prioritises' do
177
186
  it 'metadata over parent metadata' do
178
187
  parent = described_class.new(empty_configuration, 'html.slim', 'slim', wrapper, {'title' => 'title'})
@@ -16,4 +16,25 @@ RSpec.describe Usmu::Template::Layout do
16
16
  expect(layout.respond_to? :input_path).to eq(true)
17
17
  expect(layout.input_path).to eq('layouts/html.slim')
18
18
  end
19
+
20
+ it 'should not allow circular references with #find_layout' do
21
+ # This will also get tested during the acceptance tests, though we test here explicitly to help aid narrow where
22
+ # the bug actually is.
23
+ configuration = Usmu::Configuration.from_file('test/site/usmu.yml')
24
+ layout = Usmu::Template::Layout.new(configuration, 'html.slim')
25
+ end
26
+
27
+ it 'should add a default load_path for sass templates' do
28
+ configuration = Usmu::Configuration.from_hash({'source' => 'src'}, 'test/usmu.yml')
29
+ layout = Usmu::Template::Layout.new(configuration, 'css/app.scss', 'scss', "body{color: #000;}", {})
30
+ defaults = layout.send :add_template_defaults, {}, 'sass'
31
+ expect(defaults[:load_paths]).to eq(['test/src/css'])
32
+ end
33
+
34
+ it 'should merge load_path\'s for sass templates' do
35
+ configuration = Usmu::Configuration.from_hash({'source' => 'src'}, 'test/usmu.yml')
36
+ layout = Usmu::Template::Layout.new(configuration, 'css/app.scss', 'scss', "body{color: #000;}", {})
37
+ defaults = layout.send :add_template_defaults, {load_paths: ['test/src/assets/scss']}, 'sass'
38
+ expect(defaults[:load_paths].sort).to eq(['test/src/assets/scss', 'test/src/css'])
39
+ end
19
40
  end
@@ -17,4 +17,9 @@ RSpec.describe Usmu::Ui::Console do
17
17
  expect(Usmu).to receive(:verbose_logging)
18
18
  Usmu::Ui::Console.new(%w{--verbose --config test/site/usmu.yml})
19
19
  end
20
+
21
+ it '#load_configuration returns a configuration' do
22
+ config = Usmu::Ui::Console.new(%w{--config test/site/usmu.yml}).load_configuration('test/site/usmu.yml')
23
+ expect(config.class.name).to eq('Usmu::Configuration')
24
+ end
20
25
  end
data/usmu.gemspec CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency 'deep_merge', '~> 1.0'
28
28
  spec.add_dependency 'commander', '~> 4.2'
29
29
  spec.add_dependency 'logging', '~> 1.8'
30
+ #spec.add_dependency 'pry'
30
31
 
31
32
  spec.add_development_dependency 'bundler', '~> 1.6'
32
33
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -36,5 +37,7 @@ Gem::Specification.new do |spec|
36
37
  spec.add_development_dependency 'simplecov', '~> 0.9'
37
38
  spec.add_development_dependency 'guard', '~> 2.8'
38
39
  spec.add_development_dependency 'guard-rspec', '~> 4.3'
40
+ spec.add_development_dependency 'libnotify', '~> 0.9'
39
41
  spec.add_development_dependency 'turnip', '~> 1.2'
42
+ spec.add_development_dependency 'sass', '~> 3.4'
40
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: usmu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: java
6
6
  authors:
7
7
  - Matthew Scharley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-22 00:00:00.000000000 Z
11
+ date: 2015-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: slim
@@ -265,22 +265,26 @@ files:
265
265
  - share/init-site/source/index.md
266
266
  - share/init-site/usmu.yml
267
267
  - test/expected-site/.dotfiletest.txt
268
+ - test/expected-site/css/app.css
268
269
  - test/expected-site/default.html
269
270
  - test/expected-site/embedded.html
270
271
  - test/expected-site/index.html
272
+ - test/expected-site/posts/test-post.html
271
273
  - test/expected-site/robots.txt
272
274
  - test/site/content/.dotfiletest.txt
275
+ - test/site/content/css/_partial.scss
276
+ - test/site/content/css/app.scss
273
277
  - test/site/content/default.md
274
278
  - test/site/content/embedded.md
275
279
  - test/site/content/embedded.meta.yml
276
280
  - test/site/content/index.md
277
281
  - test/site/content/index.meta.yml
282
+ - test/site/content/posts/test-post.md
278
283
  - test/site/content/robots.txt
279
284
  - test/site/includes/footer.meta.yml
280
285
  - test/site/includes/footer.slim
281
286
  - test/site/layouts/embedded.meta.yml
282
287
  - test/site/layouts/embedded.slim
283
- - test/site/layouts/html.meta.yml
284
288
  - test/site/layouts/html.slim
285
289
  - test/site/usmu.yml
286
290
  - test/spec/acceptance/full_site_build.feature
@@ -318,28 +322,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
318
322
  version: '0'
319
323
  requirements: []
320
324
  rubyforge_project:
321
- rubygems_version: 2.4.2
325
+ rubygems_version: 2.2.2
322
326
  signing_key:
323
327
  specification_version: 4
324
328
  summary: A static site generator with a web-based frontend for editing.
325
329
  test_files:
326
330
  - test/expected-site/.dotfiletest.txt
331
+ - test/expected-site/css/app.css
327
332
  - test/expected-site/default.html
328
333
  - test/expected-site/embedded.html
329
334
  - test/expected-site/index.html
335
+ - test/expected-site/posts/test-post.html
330
336
  - test/expected-site/robots.txt
331
337
  - test/site/content/.dotfiletest.txt
338
+ - test/site/content/css/_partial.scss
339
+ - test/site/content/css/app.scss
332
340
  - test/site/content/default.md
333
341
  - test/site/content/embedded.md
334
342
  - test/site/content/embedded.meta.yml
335
343
  - test/site/content/index.md
336
344
  - test/site/content/index.meta.yml
345
+ - test/site/content/posts/test-post.md
337
346
  - test/site/content/robots.txt
338
347
  - test/site/includes/footer.meta.yml
339
348
  - test/site/includes/footer.slim
340
349
  - test/site/layouts/embedded.meta.yml
341
350
  - test/site/layouts/embedded.slim
342
- - test/site/layouts/html.meta.yml
343
351
  - test/site/layouts/html.slim
344
352
  - test/site/usmu.yml
345
353
  - test/spec/acceptance/full_site_build.feature
@@ -1,3 +0,0 @@
1
- ---
2
- title: Default Title
3
- layout: none