metro-ui-rails-cn 0.1.5

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.
Files changed (130) hide show
  1. data/.gitignore +18 -0
  2. data/.gitmodules +3 -0
  3. data/Gemfile +4 -0
  4. data/README.md +54 -0
  5. data/Rakefile +15 -0
  6. data/lib/generators/metro/layout/layout_generator.rb +19 -0
  7. data/lib/generators/metro/layout/templates/layout.html.erb +89 -0
  8. data/lib/metro-ui-rails-cn.rb +10 -0
  9. data/lib/metro/ui/convert.rb +64 -0
  10. data/lib/metro/ui/rails/engine.rb +15 -0
  11. data/lib/metro/ui/rails/metro.rb +2 -0
  12. data/lib/metro/ui/rails/version.rb +7 -0
  13. data/metro-ui-rails-cn.gemspec +26 -0
  14. data/test/convert_test.rb +28 -0
  15. data/test/test_helper.rb +2 -0
  16. data/vendor/assets/images/.DS_Store +0 -0
  17. data/vendor/assets/images/metro-ui-css/1.jpg +0 -0
  18. data/vendor/assets/images/metro-ui-css/1005-BizSpark-261x230.jpg +0 -0
  19. data/vendor/assets/images/metro-ui-css/2.jpg +0 -0
  20. data/vendor/assets/images/metro-ui-css/3.jpg +0 -0
  21. data/vendor/assets/images/metro-ui-css/4.jpg +0 -0
  22. data/vendor/assets/images/metro-ui-css/5.jpg +0 -0
  23. data/vendor/assets/images/metro-ui-css/Calendar128.png +0 -0
  24. data/vendor/assets/images/metro-ui-css/Camera48.png +0 -0
  25. data/vendor/assets/images/metro-ui-css/InternetExplorer128.png +0 -0
  26. data/vendor/assets/images/metro-ui-css/Mail128.png +0 -0
  27. data/vendor/assets/images/metro-ui-css/Market128.png +0 -0
  28. data/vendor/assets/images/metro-ui-css/Music128.png +0 -0
  29. data/vendor/assets/images/metro-ui-css/Picture128.png +0 -0
  30. data/vendor/assets/images/metro-ui-css/Rss128.png +0 -0
  31. data/vendor/assets/images/metro-ui-css/Video128.png +0 -0
  32. data/vendor/assets/images/metro-ui-css/YouTube128.png +0 -0
  33. data/vendor/assets/images/metro-ui-css/armor.png +0 -0
  34. data/vendor/assets/images/metro-ui-css/author.jpg +0 -0
  35. data/vendor/assets/images/metro-ui-css/bage-activity.png +0 -0
  36. data/vendor/assets/images/metro-ui-css/bage-alert.png +0 -0
  37. data/vendor/assets/images/metro-ui-css/bage-attention.png +0 -0
  38. data/vendor/assets/images/metro-ui-css/bage-available.png +0 -0
  39. data/vendor/assets/images/metro-ui-css/bage-away.png +0 -0
  40. data/vendor/assets/images/metro-ui-css/bage-busy.png +0 -0
  41. data/vendor/assets/images/metro-ui-css/bage-error.png +0 -0
  42. data/vendor/assets/images/metro-ui-css/bage-newMessage.png +0 -0
  43. data/vendor/assets/images/metro-ui-css/bage-paused.png +0 -0
  44. data/vendor/assets/images/metro-ui-css/bage-playing.png +0 -0
  45. data/vendor/assets/images/metro-ui-css/bage-unavailable.png +0 -0
  46. data/vendor/assets/images/metro-ui-css/chrome.png +0 -0
  47. data/vendor/assets/images/metro-ui-css/collapse24-black.png +0 -0
  48. data/vendor/assets/images/metro-ui-css/collapse24.png +0 -0
  49. data/vendor/assets/images/metro-ui-css/collapse32-black.png +0 -0
  50. data/vendor/assets/images/metro-ui-css/collapse32.png +0 -0
  51. data/vendor/assets/images/metro-ui-css/download-32.png +0 -0
  52. data/vendor/assets/images/metro-ui-css/excel2013icon.png +0 -0
  53. data/vendor/assets/images/metro-ui-css/expand24-black.png +0 -0
  54. data/vendor/assets/images/metro-ui-css/expand24.png +0 -0
  55. data/vendor/assets/images/metro-ui-css/expand32-black.png +0 -0
  56. data/vendor/assets/images/metro-ui-css/expand32.png +0 -0
  57. data/vendor/assets/images/metro-ui-css/firefox.png +0 -0
  58. data/vendor/assets/images/metro-ui-css/fonts/7xkFOeTxxO1GMC1suOUYWWhBabBbEjGd1iRmpyoZukE.woff +0 -0
  59. data/vendor/assets/images/metro-ui-css/fonts/DXI1ORHCpsQm3Vp6mXoaTZ1r3JsPcQLi8jytr04NNhU.woff +0 -0
  60. data/vendor/assets/images/metro-ui-css/fonts/EInbV5DfGHOiMmvb1Xr-hp1r3JsPcQLi8jytr04NNhU.woff +0 -0
  61. data/vendor/assets/images/metro-ui-css/fonts/K88pR3goAWT7BTt32Z01mz8E0i7KZn-EPnyo3HZu7kw.woff +0 -0
  62. data/vendor/assets/images/metro-ui-css/fonts/k3k702ZOKiLJc3WVjuplzJ1r3JsPcQLi8jytr04NNhU.woff +0 -0
  63. data/vendor/assets/images/metro-ui-css/fork-32.png +0 -0
  64. data/vendor/assets/images/metro-ui-css/github.png +0 -0
  65. data/vendor/assets/images/metro-ui-css/grid.png +0 -0
  66. data/vendor/assets/images/metro-ui-css/icons-white.png +0 -0
  67. data/vendor/assets/images/metro-ui-css/icons.png +0 -0
  68. data/vendor/assets/images/metro-ui-css/ie.png +0 -0
  69. data/vendor/assets/images/metro-ui-css/lock-open.png +0 -0
  70. data/vendor/assets/images/metro-ui-css/lock.png +0 -0
  71. data/vendor/assets/images/metro-ui-css/logo-jetbrains.jpg +0 -0
  72. data/vendor/assets/images/metro-ui-css/logo32.png +0 -0
  73. data/vendor/assets/images/metro-ui-css/michael.jpg +0 -0
  74. data/vendor/assets/images/metro-ui-css/myface.jpg +0 -0
  75. data/vendor/assets/images/metro-ui-css/onenote2013icon.png +0 -0
  76. data/vendor/assets/images/metro-ui-css/opera.png +0 -0
  77. data/vendor/assets/images/metro-ui-css/pull24-dark.png +0 -0
  78. data/vendor/assets/images/metro-ui-css/pull24.png +0 -0
  79. data/vendor/assets/images/metro-ui-css/responsive.png +0 -0
  80. data/vendor/assets/images/metro-ui-css/row24.png +0 -0
  81. data/vendor/assets/images/metro-ui-css/shield-user.png +0 -0
  82. data/vendor/assets/images/metro-ui-css/simple.png +0 -0
  83. data/vendor/assets/images/metro-ui-css/star32.png +0 -0
  84. data/vendor/assets/images/metro-ui-css/stock-up.png +0 -0
  85. data/vendor/assets/images/metro-ui-css/view-32.png +0 -0
  86. data/vendor/assets/images/metro-ui-css/windows-8-metro.jpg +0 -0
  87. data/vendor/assets/images/metro-ui-css/windows8_metro_green_1920_1080.jpg +0 -0
  88. data/vendor/assets/images/metro-ui-css/word2013icon.png +0 -0
  89. data/vendor/assets/javascripts/metro-ui-css-js.js +1 -0
  90. data/vendor/assets/javascripts/metro-ui-css/accordion.js +44 -0
  91. data/vendor/assets/javascripts/metro-ui-css/buttonset.js +34 -0
  92. data/vendor/assets/javascripts/metro-ui-css/carousel.js +368 -0
  93. data/vendor/assets/javascripts/metro-ui-css/dropdown.js +95 -0
  94. data/vendor/assets/javascripts/metro-ui-css/pagecontrol.js +64 -0
  95. data/vendor/assets/javascripts/metro-ui-css/rating.js +46 -0
  96. data/vendor/assets/javascripts/metro-ui-css/tile-slider.js +196 -0
  97. data/vendor/toolkit/metro-ui-css/accordion.less +69 -0
  98. data/vendor/toolkit/metro-ui-css/bricks.less +57 -0
  99. data/vendor/toolkit/metro-ui-css/buttons.less +256 -0
  100. data/vendor/toolkit/metro-ui-css/cards.less +113 -0
  101. data/vendor/toolkit/metro-ui-css/carousel.less +109 -0
  102. data/vendor/toolkit/metro-ui-css/code.less +47 -0
  103. data/vendor/toolkit/metro-ui-css/colors.less +90 -0
  104. data/vendor/toolkit/metro-ui-css/forms.less +427 -0
  105. data/vendor/toolkit/metro-ui-css/grid.less +115 -0
  106. data/vendor/toolkit/metro-ui-css/hero.less +18 -0
  107. data/vendor/toolkit/metro-ui-css/icons.less +326 -0
  108. data/vendor/toolkit/metro-ui-css/images.less +121 -0
  109. data/vendor/toolkit/metro-ui-css/layout.less +287 -0
  110. data/vendor/toolkit/metro-ui-css/listview.less +143 -0
  111. data/vendor/toolkit/metro-ui-css/menus.less +345 -0
  112. data/vendor/toolkit/metro-ui-css/modern-responsive-max480.less +147 -0
  113. data/vendor/toolkit/metro-ui-css/modern-responsive-max767.less +211 -0
  114. data/vendor/toolkit/metro-ui-css/modern-responsive-max979.less +71 -0
  115. data/vendor/toolkit/metro-ui-css/modern-responsive-min1200.less +28 -0
  116. data/vendor/toolkit/metro-ui-css/modern-responsive.less +13 -0
  117. data/vendor/toolkit/metro-ui-css/modern.less +33 -0
  118. data/vendor/toolkit/metro-ui-css/notices.less +183 -0
  119. data/vendor/toolkit/metro-ui-css/pagecontrol.less +100 -0
  120. data/vendor/toolkit/metro-ui-css/progress.less +22 -0
  121. data/vendor/toolkit/metro-ui-css/rating.less +80 -0
  122. data/vendor/toolkit/metro-ui-css/reset.less +504 -0
  123. data/vendor/toolkit/metro-ui-css/routines.less +137 -0
  124. data/vendor/toolkit/metro-ui-css/sidebar.less +139 -0
  125. data/vendor/toolkit/metro-ui-css/slider.less +52 -0
  126. data/vendor/toolkit/metro-ui-css/tables.less +158 -0
  127. data/vendor/toolkit/metro-ui-css/theme-dark.less +54 -0
  128. data/vendor/toolkit/metro-ui-css/tiles.less +276 -0
  129. data/vendor/toolkit/metro-ui-css/typography.less +347 -0
  130. metadata +229 -0
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "Metro-UI-CSS"]
2
+ path = Metro-UI-CSS
3
+ url = git://github.com/olton/Metro-UI-CSS.git
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in metro-ui-rails.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ # Metro UI for Rails 3.1 Asset Pipeline
2
+
3
+ This gem integrates [Metro-UI-CSS](https://github.com/olton/Metro-UI-CSS) toolkit into Rails 3.1 Asset Pipeline.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'metro-ui-rails-cn'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ ## Installing to Rails project:
16
+
17
+ Require metro-ui/metro.less in your metro-ui-css-and-overrides.less
18
+
19
+ @import 'metro-ui-css/modern.less';
20
+ @import 'metro-ui-css/modern-responsive.less'; // for responsive design
21
+
22
+ Require metro-ui-css.less in your application.css:
23
+
24
+ *= require metro-ui-css-and-overrides
25
+
26
+
27
+ And then require metro-ui in your js application file:
28
+
29
+ //= require metro-ui-css-js
30
+
31
+
32
+ ## Layout generator
33
+
34
+ You can generate Metro UI compatible .erb layout.
35
+
36
+ Usage:
37
+
38
+ rails generate metro:layout [LAYOUT_NAME]
39
+
40
+ Example:
41
+
42
+ rails generate metro:layout application
43
+
44
+ ## Development
45
+
46
+ `git submodule init` init git://github.com/olton/Metro-UI-CSS.git
47
+ `git submodule update` update Metro-UI-CSS
48
+ `rake update` update Metro-UI-CSS to gem
49
+
50
+
51
+ ## License
52
+
53
+ This project only integrates [Metro-UI-CSS](https://github.com/olton/Metro-UI-CSS),
54
+ thus all credits go to Sergey Pimenov, see his [license](https://github.com/olton/Metro-UI-CSS).
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ task :default => :test
5
+ Rake::TestTask.new do |t|
6
+ t.libs << 'test'
7
+ t.test_files = FileList['test/*_test.rb']
8
+ t.verbose = true
9
+ end
10
+
11
+ desc 'update Metro UI CSS for git'
12
+ task :update do
13
+ require 'metro/ui/convert'
14
+ Metro::Ui::Convert.new.run
15
+ end
@@ -0,0 +1,19 @@
1
+ require 'rails/generators'
2
+
3
+ module Metro
4
+ module Generators
5
+ class LayoutGenerator < ::Rails::Generators::Base
6
+ source_root File.expand_path("../templates", __FILE__)
7
+ desc "This generator generates layout file with navigation."
8
+ argument :layout_name, :type => :string, :default => "application"
9
+
10
+ attr_reader :app_name
11
+
12
+ def generate_layout
13
+ app = ::Rails.application
14
+ @app_name = app.class.to_s.split("::").first
15
+ template "layout.html.erb", "app/views/layouts/#{layout_name}.html.erb"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,89 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title><%%= content_for?(:title) ? yield(:title) : "<%= app_name %>" %></title>
8
+ <%%= csrf_meta_tags %>
9
+
10
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
11
+ <!--[if lt IE 9]>
12
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
13
+ <![endif]-->
14
+
15
+ <%%= stylesheet_link_tag "application", :media => "all" %>
16
+
17
+ <!-- For third-generation iPad with high-resolution Retina display: -->
18
+ <!-- Size should be 144 x 144 pixels -->
19
+ <%%= favicon_link_tag 'images/apple-touch-icon-144x144-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '144x144' %>
20
+
21
+ <!-- For iPhone with high-resolution Retina display: -->
22
+ <!-- Size should be 114 x 114 pixels -->
23
+ <%%= favicon_link_tag 'images/apple-touch-icon-114x114-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '114x114' %>
24
+
25
+ <!-- For first- and second-generation iPad: -->
26
+ <!-- Size should be 72 x 72 pixels -->
27
+ <%%= favicon_link_tag 'images/apple-touch-icon-72x72-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png', :sizes => '72x72' %>
28
+
29
+ <!-- For non-Retina iPhone, iPod Touch, and Android 2.1+ devices: -->
30
+ <!-- Size should be 57 x 57 pixels -->
31
+ <%%= favicon_link_tag 'images/apple-touch-icon-precomposed.png', :rel => 'apple-touch-icon-precomposed', :type => 'image/png' %>
32
+
33
+ <!-- For all other devices -->
34
+ <!-- Size should be 32 x 32 pixels -->
35
+ <%%= favicon_link_tag 'images/favicon.ico', :rel => 'shortcut icon' %>
36
+ </head>
37
+
38
+ <body class="modern-ui">
39
+ <div class="page">
40
+ <div class="navigation-bar">
41
+ <div class="navigation-bar-inner">
42
+ <span class="menu-pull"></span>
43
+
44
+ <div class="brand">
45
+ <a href="/"><span class="metro-ui-logo place-left"></span></a>
46
+ <a href="/"><span class="name"><%= app_name %></span></a>
47
+ </div>
48
+
49
+ <ul>
50
+ <li><%%= link_to "Home", "/" %></li>
51
+
52
+ <li data-role="dropdown">
53
+ <a href="#">Menu</a>
54
+ <ul class="dropdown-menu">
55
+ <li><%%= link_to "Link1", "/path1" %></li>
56
+ <li><%%= link_to "Link2", "/path2" %></li>
57
+ <li class="divider"></li>
58
+ <li><%%= link_to "Link3", "/path3" %></li>
59
+ </ul>
60
+ </li>
61
+ </ul>
62
+ </div>
63
+ </div>
64
+
65
+ <div class="page-region">
66
+ <div class="page-region-content">
67
+ <div class="grid">
68
+ <div class="row">
69
+ <%%= yield %>
70
+ </div>
71
+ </div>
72
+ </div>
73
+ </div>
74
+
75
+ <div class="header-bar">
76
+ <div class="header-bar-inner bg-color-darken" style="padding: 10px 10px 5px;">
77
+ <p class="tertiary-text fg-color-white">&copy; Company 2012</p>
78
+ </div>
79
+ </div>
80
+
81
+ </div>
82
+
83
+ <!-- Javascripts
84
+ ================================================== -->
85
+ <!-- Placed at the end of the document so the pages load faster -->
86
+ <%%= javascript_include_tag "application" %>
87
+
88
+ </body>
89
+ </html>
@@ -0,0 +1,10 @@
1
+ module Metro
2
+ module Ui
3
+ module Rails
4
+ require 'metro/ui/rails/engine' if defined?(Rails)
5
+ end
6
+ end
7
+ end
8
+
9
+ require 'less-rails'
10
+ require 'metro/ui/rails/metro' if defined?(Rails)
@@ -0,0 +1,64 @@
1
+ module Metro
2
+ module Ui
3
+ class Convert
4
+ def run
5
+ replace_files
6
+ end
7
+
8
+ def replace_files
9
+ less_src_dir = File.expand_path("../../../../Metro-UI-CSS/less", __FILE__)
10
+ less_dest_dir = File.expand_path("../../../../vendor/toolkit/metro-ui-css", __FILE__)
11
+ rm_and_cp(less_src_dir, less_dest_dir)
12
+
13
+ image_src_dir = File.expand_path("../../../../Metro-UI-CSS/public/images", __FILE__)
14
+ image_dest_dir = File.expand_path("../../../../vendor/assets/images/metro-ui-css", __FILE__)
15
+ rm_and_cp(image_src_dir, image_dest_dir)
16
+
17
+ js_src_dir = File.expand_path("../../../../Metro-UI-CSS/javascript", __FILE__)
18
+ js_dest_dir = File.expand_path("../../../../vendor/assets/javascripts/metro-ui-css", __FILE__)
19
+ rm_and_cp(js_src_dir, js_dest_dir)
20
+
21
+ Dir["#{less_dest_dir}/*.less"].each do |file|
22
+ content = File.read(file)
23
+ new_content = replace_image_url(content)
24
+ new_content = replace_google_font_url(new_content)
25
+ File.write(file, new_content)
26
+ end
27
+ end
28
+
29
+ def replace_image_url(content)
30
+ content.gsub(/url\((.+?images.+?)\)/mi) do |full_url|
31
+ image_url = strip_quotes( $1.strip )
32
+ image_url = "metro-ui-css/#{File.basename(image_url)}"
33
+ "image-url(\"#{image_url}\")"
34
+ end
35
+ end
36
+
37
+ def replace_google_font_url(content)
38
+ content.gsub(/url\((.+?googleusercontent.+?)\)/mi) do |full_url|
39
+ font_url = strip_quotes( $1.strip )
40
+ font_path = File.expand_path("../../../../vendor/assets/images/metro-ui-css/fonts/#{File.basename(font_url)}", __FILE__)
41
+ unless File.exist?(font_path)
42
+ FileUtils.mkdir_p(File.expand_path("../../../../vendor/assets/images/metro-ui-css/fonts", __FILE__))
43
+ system("wget #{font_url} -O #{font_path}")
44
+ end
45
+ font_url = "metro-ui-css/fonts/#{File.basename(font_url)}"
46
+ "asset-url(\"#{font_url}\")"
47
+ end
48
+
49
+ end
50
+
51
+ private
52
+ def strip_quotes(url)
53
+ url = url[1..-2] if url =~ /^\".*\"$/
54
+ url = url[1..-2] if url =~ /^'.*'$/
55
+ url
56
+ end
57
+
58
+ def rm_and_cp(src_dir, dest_dir)
59
+ FileUtils.rm_rf(dest_dir + '/*')
60
+ FileUtils.cp_r( Dir.glob("#{ src_dir}/**" ), dest_dir)
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,15 @@
1
+ require 'rails'
2
+
3
+ module Metro
4
+ module Ui
5
+ module Rails
6
+ class Engine < ::Rails::Engine
7
+ initializer 'metro-ui-rails.setup',
8
+ :after => 'less-rails.after.load_config_initializers',
9
+ :group => :all do |app|
10
+ app.config.less.paths << File.join(config.root, 'vendor', 'toolkit')
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,2 @@
1
+ require 'metro/ui/rails/engine'
2
+ require 'metro/ui/rails/version'
@@ -0,0 +1,7 @@
1
+ module Metro
2
+ module Ui
3
+ module Rails
4
+ VERSION = "0.1.5"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'metro/ui/rails/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "metro-ui-rails-cn"
8
+ gem.version = Metro::Ui::Rails::VERSION
9
+ gem.authors = ["mangege"]
10
+ gem.email = ["mr.mangege@gmail.com"]
11
+ gem.description = %q{metro-ui-rails project integrates Metro-UI CSS toolkit for Rails 3.1 Asset Pipeline}
12
+ gem.summary = %q{Metro-UI CSS toolkit for Rails 3.1 Asset Pipeline}
13
+ gem.homepage = "https://github.com/mangege/metro-ui-rails-cn"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.require_paths = ["lib"]
17
+
18
+ if RUBY_PLATFORM == 'java'
19
+ gem.add_dependency 'therubyrhino', '~> 1.73.4'
20
+ else
21
+ gem.add_dependency 'therubyracer', '>= 0.10.2'
22
+ end
23
+
24
+ gem.add_runtime_dependency 'less-rails', '~> 2.2.3'
25
+ gem.add_development_dependency 'rails', '>= 3.1'
26
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'test_helper'
3
+ require 'metro/ui/convert'
4
+
5
+ class ConvertTest < ActiveSupport::TestCase
6
+ setup do
7
+ @convert = Metro::Ui::Convert.new
8
+ end
9
+
10
+ test "#replace_image_url 应该换成image-url" do
11
+ content = '@icons_black: url("../images/icons.png");'
12
+ assert_equal '@icons_black: image-url("metro-ui-css/icons.png");', @convert.replace_image_url(content)
13
+
14
+ content = "@icons_black: url('../images/icons.png');"
15
+ assert_equal '@icons_black: image-url("metro-ui-css/icons.png");', @convert.replace_image_url(content)
16
+
17
+ content = "@icons_black: url(../images/icons.png);"
18
+ assert_equal '@icons_black: image-url("metro-ui-css/icons.png");', @convert.replace_image_url(content)
19
+ end
20
+
21
+ test "#replace_google_font_url 应该换成asset-url,并下载文件到本地" do
22
+ content = " src: local('PT Serif Caption'), local('PTSerif-Caption'), url(http://themes.googleusercontent.com/static/fonts/ptserifcaption/v4/7xkFOeTxxO1GMC1suOUYWWhBabBbEjGd1iRmpyoZukE.woff) format('woff'); "
23
+ new_content = " src: local('PT Serif Caption'), local('PTSerif-Caption'), asset-url(\"metro-ui-css/fonts/7xkFOeTxxO1GMC1suOUYWWhBabBbEjGd1iRmpyoZukE.woff\") format('woff'); "
24
+
25
+ assert_equal new_content, @convert.replace_google_font_url(content)
26
+ assert File.exist?( File.expand_path("../../vendor/assets/images/metro-ui-css/fonts/", __FILE__) )
27
+ end
28
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require 'active_support/test_case'
Binary file