metro-ui-rails-cn 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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