middleman-more 3.0.5 → 3.0.6

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.
@@ -18,7 +18,37 @@ Feature: i18n Preview
18
18
  Then I should see "Como Esta?"
19
19
  When I go to "/es/hola.html"
20
20
  Then I should see "Hola World"
21
-
21
+
22
+ Scenario: A template changes i18n during preview
23
+ Given a fixture app "i18n-test-app"
24
+ And a file named "config.rb" with:
25
+ """
26
+ activate :i18n
27
+ """
28
+ Given the Server is running at "i18n-test-app"
29
+ And the file "locales/en.yml" has the contents
30
+ """
31
+ ---
32
+ en:
33
+ greetings: "Howdy"
34
+ hi: "Hello"
35
+ """
36
+ When I go to "/"
37
+ Then I should see "Howdy"
38
+ When I go to "/hello.html"
39
+ Then I should see "Hello World"
40
+ When the file "locales/en.yml" has the contents
41
+ """
42
+ ---
43
+ en:
44
+ greetings: "How You Doin"
45
+ hi: "Sup"
46
+ """
47
+ When I go to "/"
48
+ Then I should see "How You Doin"
49
+ When I go to "/hello.html"
50
+ Then I should see "Sup World"
51
+
22
52
  Scenario: Running localize with the alt path config
23
53
  Given a fixture app "i18n-test-app"
24
54
  And a file named "config.rb" with:
@@ -13,10 +13,12 @@ module Middleman
13
13
 
14
14
  # Needed for helpers as well
15
15
  app.after_configuration do
16
- ::I18n.load_path += Dir[File.join(root, locales_dir, "*.yml")]
16
+ locales_glob = File.join(locales_dir, "*.yml");
17
+
18
+ ::I18n.load_path += Dir[File.join(root, locales_glob)]
17
19
  ::I18n.reload!
18
20
 
19
- Localizer.new(self, options)
21
+ Localizer.new(self, locales_glob, options)
20
22
  end
21
23
  end
22
24
  alias :included :registered
@@ -27,8 +29,9 @@ module Middleman
27
29
  attr_reader :app
28
30
  delegate :logger, :to => :app
29
31
 
30
- def initialize(app, options={})
32
+ def initialize(app, locales_glob, options={})
31
33
  @app = app
34
+ @locales_glob = locales_glob
32
35
  @maps = {}
33
36
  @options = options
34
37
 
@@ -62,11 +65,20 @@ module Middleman
62
65
  :i18n,
63
66
  self
64
67
  )
68
+
69
+ @app.files.changed(&method(:on_file_changed))
70
+ @app.files.deleted(&method(:on_file_changed))
71
+ end
72
+
73
+ def on_file_changed(file)
74
+ if File.fnmatch(@locales_glob, file)
75
+ ::I18n.reload!
76
+ end
65
77
  end
66
78
 
67
79
  def langs
68
80
  @options[:langs] || begin
69
- Dir[File.join(@app.root, @app.locales_dir, "*.yml")].map { |file|
81
+ Dir[File.join(@app.root, @locales_glob)].map { |file|
70
82
  File.basename(file).gsub(".yml", "")
71
83
  }.sort.map(&:to_sym)
72
84
  end
@@ -4,6 +4,9 @@ module Middleman
4
4
  class << self
5
5
  def registered(app, options={})
6
6
  require 'digest/sha1'
7
+ require 'rack/test'
8
+ require 'uri'
9
+
7
10
  exts = options[:exts] || %w(.jpg .jpeg .png .gif .js .css)
8
11
 
9
12
  # Allow specifying regexes to ignore, plus always ignore apple touch icons
@@ -36,16 +39,12 @@ module Middleman
36
39
  next unless @exts.include? resource.ext
37
40
  next if @ignore.any? { |ignore| Middleman::Util.path_match(ignore, resource.destination_path) }
38
41
 
39
- if resource.template? # if it's a template, render it out
40
- # Render through the Rack interface so middleware and mounted apps get a shot
41
- rack_client = ::Rack::Test::Session.new(@app.class)
42
- response = rack_client.get(URI.escape(resource.destination_path), {}, { "bypass_asset_hash" => true })
43
- raise "#{resource.path} should be in the sitemap!" unless response.status == 200
42
+ # Render through the Rack interface so middleware and mounted apps get a shot
43
+ rack_client = ::Rack::Test::Session.new(@app.class)
44
+ response = rack_client.get(URI.escape(resource.destination_path), {}, { "bypass_asset_hash" => true })
45
+ raise "#{resource.path} should be in the sitemap!" unless response.status == 200
44
46
 
45
- digest = Digest::SHA1.hexdigest(response.body)[0..7]
46
- else # if it's a static file, just hash it
47
- digest = Digest::SHA1.file(resource.source_file).hexdigest[0..7]
48
- end
47
+ digest = Digest::SHA1.hexdigest(response.body)[0..7]
49
48
 
50
49
  resource.destination_path = resource.destination_path.sub(/\.(\w+)$/) { |ext| "-#{digest}#{ext}" }
51
50
  end
@@ -40,7 +40,7 @@ module Middleman::Extensions
40
40
  end
41
41
 
42
42
  def self.gzip_file(path)
43
- input_file = File.open(path, 'r').read
43
+ input_file = File.open(path, 'rb').read
44
44
  output_filename = path + '.gz'
45
45
  input_file_time = File.mtime(path)
46
46
 
@@ -49,7 +49,7 @@ module Middleman::Extensions
49
49
  return
50
50
  end
51
51
 
52
- File.open(output_filename, 'w') do |f|
52
+ File.open(output_filename, 'wb') do |f|
53
53
  gz = Zlib::GzipWriter.new(f, Zlib::BEST_COMPRESSION)
54
54
  gz.mtime = input_file_time.to_i
55
55
  gz.write input_file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-more
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-24 00:00:00.000000000 Z
13
+ date: 2012-10-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: middleman-core
@@ -19,7 +19,7 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 3.0.5
22
+ version: 3.0.6
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,7 +27,7 @@ dependencies:
27
27
  requirements:
28
28
  - - '='
29
29
  - !ruby/object:Gem::Version
30
- version: 3.0.5
30
+ version: 3.0.6
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: uglifier
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -632,7 +632,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
632
632
  version: '0'
633
633
  segments:
634
634
  - 0
635
- hash: 4494710196171968679
635
+ hash: -3726525610890072589
636
636
  required_rubygems_version: !ruby/object:Gem::Requirement
637
637
  none: false
638
638
  requirements:
@@ -641,10 +641,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
641
641
  version: '0'
642
642
  segments:
643
643
  - 0
644
- hash: 4494710196171968679
644
+ hash: -3726525610890072589
645
645
  requirements: []
646
646
  rubyforge_project:
647
- rubygems_version: 1.8.24
647
+ rubygems_version: 1.8.23
648
648
  signing_key:
649
649
  specification_version: 3
650
650
  summary: Hand-crafted frontend development