mint 0.5.1 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/Gemfile +18 -0
  2. data/README.md +3 -3
  3. data/bin/mint +27 -27
  4. data/bin/mint-epub +6 -6
  5. data/config/syntax.yaml +12 -12
  6. data/{templates → config/templates}/base/style.sass +11 -4
  7. data/config/templates/default/css/style.css +158 -0
  8. data/config/templates/default/layout.haml +8 -0
  9. data/{templates → config/templates}/default/style.sass +0 -0
  10. data/{templates/default → config/templates/protocol}/layout.haml +0 -0
  11. data/config/templates/protocol/style.sass +20 -0
  12. data/config/templates/reset.css +92 -0
  13. data/config/templates/zen/css/style.css +145 -0
  14. data/{templates/pro → config/templates/zen}/layout.haml +0 -0
  15. data/config/templates/zen/style.sass +24 -0
  16. data/features/config.feature +21 -0
  17. data/features/publish.feature +3 -3
  18. data/features/support/env.rb +9 -27
  19. data/features/templates.feature +79 -0
  20. data/lib/mint.rb +11 -11
  21. data/lib/mint/{commandline.rb → command_line.rb} +96 -80
  22. data/lib/mint/css.rb +43 -34
  23. data/lib/mint/document.rb +99 -93
  24. data/lib/mint/helpers.rb +21 -17
  25. data/lib/mint/layout.rb +1 -1
  26. data/lib/mint/mint.rb +92 -36
  27. data/lib/mint/plugin.rb +5 -5
  28. data/lib/mint/plugins/epub.rb +51 -51
  29. data/lib/mint/resource.rb +2 -2
  30. data/lib/mint/style.rb +2 -2
  31. data/lib/mint/version.rb +1 -1
  32. data/spec/command_line_spec.rb +87 -0
  33. data/spec/css_spec.rb +46 -0
  34. data/spec/document_spec.rb +38 -40
  35. data/spec/helpers_spec.rb +101 -83
  36. data/spec/layout_spec.rb +1 -1
  37. data/spec/mint_spec.rb +184 -60
  38. data/spec/plugin_spec.rb +61 -67
  39. data/spec/plugins/epub_spec.rb +47 -47
  40. data/spec/resource_spec.rb +9 -9
  41. data/spec/spec_helper.rb +20 -93
  42. data/spec/style_spec.rb +6 -8
  43. data/spec/support/fixtures/content.md +16 -0
  44. data/spec/support/fixtures/dynamic.sass +3 -0
  45. data/spec/support/fixtures/layout.haml +3 -0
  46. data/spec/support/fixtures/static.css +3 -0
  47. data/spec/support/matchers.rb +15 -0
  48. metadata +160 -70
  49. data/spec/commandline_spec.rb +0 -91
  50. data/templates/pro/style.sass +0 -0
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ source :rubygems
2
+
3
+ gem "tilt"
4
+ gem "rdiscount"
5
+ gem "haml"
6
+ gem "sass"
7
+ gem "less"
8
+ gem "activesupport"
9
+
10
+ gem "rubyzip"
11
+ gem "hashie"
12
+ gem "nokogiri"
13
+
14
+ gem "rspec"
15
+ gem "cucumber"
16
+ gem "aruba"
17
+
18
+ gem "debugger"
data/README.md CHANGED
@@ -47,7 +47,7 @@ A basic Mint document
47
47
 
48
48
  Mint is loaded with smart defaults, so if you don't want to configure something--say, the basic HTML skeleton of your document or the output directory--you don't have to. You'll probably be surprised at how easy it is to use out of the box, and how configurable it is.
49
49
 
50
- document = Document.new 'Minimalism.md'
50
+ document = Document.new "Minimalism.md"
51
51
  document.publish!
52
52
 
53
53
  If you want to customize your document, though--and that's why I built this library--Mint makes that easy.
@@ -74,7 +74,7 @@ So if you're writing your layout using Haml, the template might look like this:
74
74
  !!!
75
75
  %html
76
76
  %head
77
- %link(rel='stylesheet' href=stylesheet)
77
+ %link(rel="stylesheet" href=stylesheet)
78
78
 
79
79
  %body
80
80
  #container= content
@@ -84,7 +84,7 @@ You can build stylesheets using [CSS][], [SASS/SCSS][] or [Less][]. They will al
84
84
  Mint comes preloaded with several styles and layouts.
85
85
 
86
86
  1. Default
87
- 2. Pro
87
+ 2. Zen
88
88
  3. Resume\*
89
89
  4. Protocol
90
90
  5. Protocol Flow\* - requires Javascript and jQuery
data/bin/mint CHANGED
@@ -1,38 +1,38 @@
1
1
  #!/usr/bin/env ruby
2
2
  # A script for harnessing Mint at the commandline
3
- # Usage: mint [options] files
3
+ # Usage: mint [command] [options] [files]
4
4
 
5
- require 'mint'
5
+ require "mint"
6
+ require "shellwords"
6
7
 
7
- # Parse options from the commandline
8
- commandline_options = {}
9
- process_opts = lambda {|k,v| commandline_options[k] = v }
10
- parser = Mint::CommandLine.parser(&process_opts)
11
- parser.parse!
8
+ argv, commandline_options, help =
9
+ Mint::CommandLine.parse(ARGV).values_at(:argv, :options, :help)
12
10
 
13
- # Minimalist implementation that I want to move to, but
14
- # will have to refactor commandline.rb code and tests
15
- #
16
- # first = ARGV.first.downcase.to_sym
17
- # commands = [ :install, :edit, :set, :config ]
18
- # command = commands.include?(first) ? command : :mint
19
-
20
- # Mint::CommandLine.send(command, commandline_options)
21
-
22
- case ARGV.first.downcase.to_sym
11
+ case argv.shift.downcase.to_sym
23
12
  when :publish
24
- commandline_options.delete :verbose
25
- commandline_options.delete :simulation
26
- ARGV.shift
27
- Mint::CommandLine.publish!(ARGV, commandline_options)
13
+ # Aruba chokes here, so we use this hack to convince Mint we're
14
+ # not in a pipeline
15
+ files =
16
+ if $stdin.tty? || ENV["MINT_NO_PIPE"]
17
+ argv
18
+ else
19
+ $stdin.each_line.reduce [] do |list, line|
20
+ list.concat(Shellwords.split(line))
21
+ end
22
+ end
23
+ Mint::CommandLine.publish!(files, commandline_options)
28
24
  when :help
29
- Mint::CommandLine.help(parser.help)
25
+ Mint::CommandLine.help(help)
30
26
  when :install
31
- Mint::CommandLine.install(ARGV.shift, commandline_options)
27
+ Mint::CommandLine.install(argv.shift, commandline_options)
28
+ when :uninstall
29
+ Mint::CommandLine.uninstall(argv.shift, commandline_options)
30
+ when :templates
31
+ Mint::CommandLine.templates(argv.shift, commandline_options)
32
32
  when :edit
33
- Mint::CommandLine.edit(ARGV.shift, commandline_options)
33
+ Mint::CommandLine.edit(argv.shift, commandline_options)
34
34
  when :set
35
- Mint::CommandLine.set(ARGV.shift, ARGV.shift, commandline_options)
35
+ Mint::CommandLine.set(argv.shift, argv.shift, commandline_options)
36
36
  when :config
37
37
  Mint::CommandLine.config
38
38
  else
@@ -43,8 +43,8 @@ else
43
43
  # document list.
44
44
 
45
45
  begin
46
- system "mint-#{ARGV.first} #{ARGV[1..-1].join ' '}"
46
+ system 'mint-#{argv.first} #{argv[1..-1].join " "}'
47
47
  rescue
48
- Mint::CommandLine.help(parser.help)
48
+ Mint::CommandLine.help(help)
49
49
  end
50
50
  end
data/bin/mint-epub CHANGED
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  # A script for publishing Mint in the ePub format
4
- # Usage: mint epub [options] files
4
+ # Usage: mint epub [command] [options] [files]
5
5
 
6
- require 'mint'
7
- require 'mint/plugins/epub'
6
+ require "mint"
7
+ require "mint/plugins/epub"
8
8
 
9
9
  # NOTE: This is not how I want this plugin to be called.
10
10
  # However, I do want a first iteration of the plugin
11
11
  # system on master, so we'll go with this for now.
12
12
 
13
13
  def usage
14
- abort 'mint epub publish file'
14
+ abort "mint epub publish file"
15
15
  end
16
16
 
17
17
  case ARGV.shift.downcase.to_sym
18
18
  when :publish
19
- destination = ARGV.first.gsub(/\.[^.]*$/, '')
20
- opts = { destination: destination, style_destination: 'OPS' }
19
+ destination = ARGV.first.gsub(/\.[^.]*$/, "")
20
+ opts = { destination: destination, style_destination: "OPS" }
21
21
  document = Mint::Document.new(ARGV.first, opts)
22
22
  document.publish! :plugins => [Mint::EPub]
23
23
  end
data/config/syntax.yaml CHANGED
@@ -2,70 +2,70 @@ template:
2
2
  short: t
3
3
  long: template
4
4
  parameter: true
5
- description: 'Specify the template (layout + style)'
5
+ description: "Specify the template (layout + style)"
6
6
 
7
7
  layout:
8
8
  short: l
9
9
  long: layout
10
10
  parameter: true
11
- description: 'Specify only the style'
11
+ description: "Specify only the style"
12
12
 
13
13
  style:
14
14
  short: s
15
15
  long: style
16
16
  parameter: true
17
- description: 'Specify only the style'
17
+ description: "Specify only the style"
18
18
 
19
19
  root:
20
20
  short: w
21
21
  long: r
22
22
  parameter: true
23
- description: 'Specify a root outside the current directory'
23
+ description: "Specify a root outside the current directory"
24
24
 
25
25
  destination:
26
26
  short: d
27
27
  long: destination
28
28
  parameter: true
29
- description: 'Specify a destination directory, relative to the root'
29
+ description: "Specify a destination directory, relative to the root"
30
30
 
31
31
  style_destination:
32
32
  short: n
33
33
  long: style-destination
34
34
  parameter: true
35
- description: 'Specify a destination directory for stylesheets, or nil to link in place'
35
+ description: "Specify a destination directory for stylesheets, or nil to link in place"
36
36
 
37
37
  global:
38
38
  short: G
39
39
  long: global
40
40
  parameter: false
41
- description: 'Specify config changes on a global level'
41
+ description: "Specify config changes on a global level"
42
42
 
43
43
  user:
44
44
  short: U
45
45
  long: user
46
46
  parameter: false
47
- description: 'Specify config changes on a user-wide level'
47
+ description: "Specify config changes on a user-wide level"
48
48
 
49
49
  local:
50
50
  short: L
51
51
  long: local
52
52
  parameter: false
53
- description: 'Specify config changes on a project-specific level'
53
+ description: "Specify config changes on a project-specific level"
54
54
 
55
55
  force:
56
56
  short: f
57
57
  long: force
58
58
  parameter: false
59
- description: 'Force file overwrite without prompt'
59
+ description: "Force file overwrite without prompt"
60
60
 
61
61
  verbose:
62
62
  short: v
63
63
  long: verbose
64
64
  parameter: false
65
- description: 'Verbose output'
65
+ description: "Verbose output"
66
66
 
67
67
  simulation:
68
68
  short: S
69
69
  long: simulation
70
70
  parameter: false
71
- description: 'Simulate transformation without actually creating files'
71
+ description: "Simulate transformation without actually creating files"
@@ -57,7 +57,6 @@ ul, ol
57
57
  p
58
58
  margin: ($screen_unit / 2) 0
59
59
 
60
- // For some reason this is necessary ...
61
60
  ul+p, ol+p, blockquote+p, pre+p
62
61
  text-indent: 0
63
62
 
@@ -69,7 +68,7 @@ a
69
68
  text-decoration: underline
70
69
 
71
70
  code
72
- font-family: Menlo, Mensch, Monaco, Consolas, Monotype, mono
71
+ font-family: Monaco, Menlo, Mensch, Consolas, Monotype, mono
73
72
  font-style: normal
74
73
 
75
74
  pre, blockquote
@@ -78,7 +77,7 @@ pre, blockquote
78
77
  margin-right: $screen_unit * 2
79
78
  padding: $screen_unit / 3 $screen_unit
80
79
  padding-left: $screen_unit * 3/4
81
-
80
+ white-space: pre
82
81
 
83
82
  p
84
83
  margin: 0
@@ -96,15 +95,23 @@ img
96
95
  #container
97
96
  display: block
98
97
  border: solid 1px #999
99
- width: 620px
98
+ width: 740px
100
99
  padding: 60px
101
100
  margin: ($screen_unit / 2) auto
102
101
  background-color: #fff
102
+ box-sizing: border-box
103
+ -moz-box-sizing: border-box
104
+ -webkit-box-sizing: border-box
103
105
 
104
106
  code
105
107
  font-size: $screen_font_size * 7/8
106
108
 
107
109
  pre
110
+ white-space: pre-wrap
111
+ white-space: -moz-pre-wrap
112
+ white-space: -o-pre-wrap
113
+ word-wrap: break-word
114
+
108
115
  code
109
116
  font-size: $screen_font_size * 3/4
110
117
 
@@ -0,0 +1,158 @@
1
+ @import url(../reset.css);
2
+ body {
3
+ font-family: Georgia, serif; }
4
+
5
+ h1, h2 {
6
+ line-height: 1.3; }
7
+
8
+ h2, h3, h4, h5, h6 {
9
+ line-height: 23.4px; }
10
+
11
+ h1, h2, h3, h4, h5, h6 {
12
+ font-weight: normal; }
13
+
14
+ h1 {
15
+ font-size: 27px;
16
+ margin-top: 23.4px;
17
+ margin-bottom: 23.4px; }
18
+
19
+ h2 {
20
+ font-size: 21.6px;
21
+ margin-top: 23.4px;
22
+ margin-bottom: 23.4px; }
23
+
24
+ h3 {
25
+ font-size: 19.8px;
26
+ margin-top: 35.1px;
27
+ margin-bottom: 11.7px; }
28
+
29
+ h4 {
30
+ font-size: 18.9px;
31
+ margin-top: 40.95px;
32
+ margin-bottom: 5.85px; }
33
+
34
+ h5, h6 {
35
+ font-size: 18px;
36
+ margin-top: 20.475px;
37
+ margin-bottom: 2.925px; }
38
+
39
+ ul {
40
+ list-style-type: square; }
41
+ ul ul {
42
+ list-style-type: circle; }
43
+
44
+ ul, ol {
45
+ margin: 5.85px 0 0 11.7px;
46
+ padding-left: 28.08px; }
47
+ ul li p, ol li p {
48
+ text-indent: 0 !important; }
49
+ ul li + li, ol li + li {
50
+ margin-top: 5.85px; }
51
+
52
+ p {
53
+ margin: 11.7px 0; }
54
+
55
+ ul + p, ol + p, blockquote + p, pre + p {
56
+ text-indent: 0; }
57
+
58
+ a:link, a:visited, a:active {
59
+ color: #cb0018;
60
+ text-decoration: none; }
61
+ a:hover {
62
+ text-decoration: underline; }
63
+
64
+ code {
65
+ font-family: Monaco, Menlo, Mensch, Consolas, Monotype, mono;
66
+ font-style: normal; }
67
+
68
+ pre, blockquote {
69
+ display: block;
70
+ margin-left: 23.4px;
71
+ margin-right: 46.8px;
72
+ padding: 7.8px 23.4px;
73
+ padding-left: 17.55px;
74
+ white-space: pre; }
75
+ pre p, blockquote p {
76
+ margin: 0;
77
+ line-height: 1.35; }
78
+
79
+ img {
80
+ display: block; }
81
+
82
+ @media screen {
83
+ body {
84
+ font-size: 18px;
85
+ line-height: 23.4px;
86
+ background-color: #666666; }
87
+
88
+ #container {
89
+ display: block;
90
+ border: solid 1px #999999;
91
+ width: 740px;
92
+ padding: 60px;
93
+ margin: 11.7px auto;
94
+ background-color: white;
95
+ box-sizing: border-box;
96
+ -moz-box-sizing: border-box;
97
+ -webkit-box-sizing: border-box; }
98
+
99
+ code {
100
+ font-size: 15.75px; }
101
+
102
+ pre {
103
+ white-space: pre-wrap;
104
+ white-space: -moz-pre-wrap;
105
+ white-space: -o-pre-wrap;
106
+ word-wrap: break-word; }
107
+ pre code {
108
+ font-size: 13.5px; } }
109
+ @media print {
110
+ @page {
111
+ margin-left: 1in;
112
+ margin-right: 1in;
113
+ margin-top: 1in;
114
+ margin-bottom: 1in; }
115
+
116
+ body {
117
+ font-size: 12pt;
118
+ line-height: 15.6pt;
119
+ width: auto;
120
+ margin: 0;
121
+ padding: 0; }
122
+
123
+ code {
124
+ font-size: 10.5pt; }
125
+
126
+ pre code {
127
+ font-size: 9pt; }
128
+
129
+ h1, h2, h3, h4, h5, h6, li, blockquote {
130
+ page-break-inside: avoid; }
131
+
132
+ p {
133
+ widows: 3;
134
+ orphans: 3; } }
135
+ body {
136
+ font-family: Georgia, "Hoefler Text", Garamond, FreeSerif, serif; }
137
+
138
+ h1 {
139
+ border-bottom: solid 2px #666666; }
140
+
141
+ h3 {
142
+ font-style: italic; }
143
+
144
+ h4 {
145
+ font-variant: small-caps; }
146
+
147
+ h5, h6 {
148
+ font-weight: bold; }
149
+
150
+ p + p {
151
+ text-indent: 23.4px; }
152
+
153
+ pre, blockquote {
154
+ font-size: 18px;
155
+ border-left: solid 2px #dddddd; }
156
+
157
+ blockquote {
158
+ font-style: italic; }
@@ -0,0 +1,8 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %link(rel='stylesheet' href=stylesheet)
5
+ %style(type="text/css")= inline_styles
6
+
7
+ %body
8
+ #container= content