lumos 0.0.1 → 0.0.2

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: e662e8a14acb448c195481fd0695f902efa6f30b
4
- data.tar.gz: 96989e2c5815ab117671a61579a5761797e3c664
3
+ metadata.gz: 887b1b4fa514d8fc3666225a92cb9cdb53ac3d49
4
+ data.tar.gz: a191bf9c29e01e53b6ec91f8df0d8925b2a99038
5
5
  SHA512:
6
- metadata.gz: d605efe5be6043cfac0d48c7bf1acc1fd0f56b17b620c3133eeb723ac7170c76c4c7db8678d1d2615ee43ed025dd68b8abae0d250a583949a5baad8219866a45
7
- data.tar.gz: 56dba760f56e8a45d87e1fa1f4844101a0c37a2c58a2e6baf18aaee8084c801f1a01c4ecfe87344075f23f9b5d9ef173a89f7eb6b54a2a0503144afa5cc6d43a
6
+ metadata.gz: 6104e45fed2d29c7b2197ba3ab8d38a6a8cbc781c494b5eeb4d341bd32ab8a7eb882bc5d9daa78bc30b8096c87e1b7be51f82e3ed4669fae5de6c92cc829e3e5
7
+ data.tar.gz: 38855eb12ffa31c6272e9e0cd5eeacfd2220069a2f2adeeffae0d114a6d93456dfc3cb077869afe0c1b3935c63f58e2d4f16a573c91dcee7167ebb8909adacf6
data/README.md CHANGED
@@ -56,6 +56,8 @@ lumos :>, "☢", 10
56
56
  print "☢☢☢☢☢☢☢☢☢☢"
57
57
  ```
58
58
 
59
+ ---
60
+
59
61
  ### Wrapper
60
62
 
61
63
  But main reason of `lumos` existence is necessity of objects highlighting besides ambient noise. So, initial array might be highlighted with `lumos %w(foo bar baz)` that will give us such output:
@@ -89,7 +91,7 @@ nes", :la=>"Laos"}
89
91
  #### delimiter:
90
92
 
91
93
  ```ruby
92
- lumos domains, {position: :horizontal, delimiter: "❤★"}
94
+ lumos domains, position: :horizontal, delimiter: "❤★"
93
95
  ```
94
96
 
95
97
  <pre>
@@ -98,10 +100,20 @@ nes", :la=>"Laos"}
98
100
  ❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★❤★
99
101
  </pre>
100
102
 
103
+ And as you know – everything is better with emoji, so lumos supports emoji delimiters as well!
104
+
105
+ ```ruby
106
+ lumos "Coffee smells like freshly ground heaven", delimiter: ":coffee:", position: :bottom
107
+ ```
108
+
109
+ Coffee smells like freshly ground heaven
110
+
111
+ :coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee::coffee:
112
+
101
113
  #### padding:
102
114
 
103
115
  ```ruby
104
- lumos domains, {delimiter: "❄", padding: 2}
116
+ lumos domains, delimiter: "❄", padding: 2
105
117
  ```
106
118
 
107
119
  <pre>
@@ -120,7 +132,7 @@ lumos domains, {delimiter: "❄", padding: 2}
120
132
  #### length:
121
133
 
122
134
  ```ruby
123
- lumos domains, {position: :horizontal, delimiter: "->", length: 140}
135
+ lumos domains, position: :horizontal, delimiter: "->", length: 140
124
136
  ```
125
137
 
126
138
  <pre>
@@ -128,3 +140,29 @@ lumos domains, {position: :horizontal, delimiter: "->", length: 140}
128
140
  {:ru=>"Russia", :th=>"Thailand", "com.au"=>"Australia", :ph=>"Philippines", :la=>"Laos"}
129
141
  ->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->->
130
142
  </pre>
143
+
144
+ ---
145
+
146
+ ### Default options
147
+
148
+ You are able to specify one or few settings described above as a part of global default options.
149
+
150
+ If you're using Rails, you can define a Hash with default options in `config/application.rb` or in any of the `config/environments/*.rb` files on config.lumos_defaults. An example:
151
+
152
+ ```ruby
153
+ module YourApp
154
+ class Application < Rails::Application
155
+ # Other code...
156
+
157
+ config.lumos_defaults = {position: :bottom, delimiter: ":poop:"}
158
+ end
159
+ end
160
+ ```
161
+
162
+ Another option is to directly modify the `Lumos::Wrapper.default_options` Hash - this method works for non-Rails applications or is an option if you prefer to place the Lumos default settings in an initializer.
163
+
164
+ ```ruby
165
+ Lumos::Wrapper.default_options[:padding] = 5
166
+ Lumos::Wrapper.default_options[:length] = 140
167
+ Lumos::Wrapper.default_options[:delimiter] = ":alien:"
168
+ ```
data/TODO.md CHANGED
@@ -1,13 +1,21 @@
1
1
  # Lumos TODO
2
2
 
3
- ## Release
3
+ ## 0.0.1
4
4
  - [x] Cases when length is wider than message
5
5
  - [x] Test different input objects behaviour (Set, Struct, OpenStruct, Class, ActiveRecord)
6
6
  - [x] Refactor Lumos::Formatters::Base
7
7
  - [x] Rewrite README
8
- - [ ] Release on Rubygems
8
+ - [x] Release on Rubygems
9
+
10
+ ## Release
11
+ - [x] Add \n to the end of lumos line
12
+ - [x] Add emoji support for divider and wrapper
13
+ - [x] Changeable default options
14
+ - [x] default_options spec
15
+ - [x] Support emoji for default_options too
16
+ - [x] Update README about emoji support
17
+ - [x] Add config.rails_defaults options
18
+ - [x] Add defaults description to README
9
19
 
10
20
  ## Next
11
- - [ ] Changeable default options
12
- - [ ] Add colors support
13
- - [ ] Add emoji support
21
+ - [ ] Add multi-colors support
@@ -7,3 +7,5 @@ end
7
7
  require "lumos/wrapper"
8
8
  require "lumos/core_ext/kernel"
9
9
  require "lumos/version"
10
+
11
+ require "lumos/railtie" if defined?(Rails)
@@ -1,3 +1,5 @@
1
+ require "rumoji"
2
+
1
3
  module Kernel
2
4
  def lumos(message = nil, *args)
3
5
  if message.nil? || message == :>
@@ -13,11 +15,13 @@ private
13
15
  delimiter ||= "#"
14
16
  iterations ||= 3
15
17
 
16
- print delimiter * iterations.to_i
18
+ print (Lumos::Formatters::Base.string_to_emoji(delimiter) * iterations.to_i) + "\n"
17
19
  end
18
20
 
19
21
  def lumos_wrap(message = nil, options)
20
- options ||= {}
21
- print Lumos::Wrapper.new(message, options).result
22
+ options ||= {}
23
+ options[:delimiter] = options[:delimiter] if options[:delimiter]
24
+
25
+ print Lumos::Wrapper.new(message, options).result + "\n"
22
26
  end
23
27
  end
@@ -6,11 +6,16 @@ module Lumos
6
6
 
7
7
  attr_reader :message, :delimiter, :padding, :length
8
8
 
9
+ def self.string_to_emoji(delimiter)
10
+ emoji = delimiter.scan(/\:.*?\:/)
11
+ emoji.size > 0 ? emoji.map{|string| Rumoji.decode(string)}.join("") : delimiter
12
+ end
13
+
9
14
  def initialize(options = {})
10
15
  @message = unwrap_message options.fetch(:message)
11
- @delimiter = options.fetch(:delimiter, "#").to_s
12
16
  @padding = options.fetch(:padding, 1).to_i.abs
13
- @length = options.fetch(:length, 70).to_i.abs
17
+ @delimiter = Lumos::Formatters::Base.string_to_emoji options[:delimiter].to_s
18
+ @length = options[:length].to_i.abs
14
19
  end
15
20
 
16
21
  def message_length
@@ -24,7 +29,6 @@ module Lumos
24
29
  message.to_s.include?(object_id_hex) ? message.inspect : message.to_s
25
30
  end
26
31
 
27
-
28
32
  def vertical_padding
29
33
  " " * padding if padding > 0
30
34
  end
@@ -0,0 +1,11 @@
1
+ require "lumos"
2
+
3
+ module Lumos
4
+ require "rails"
5
+
6
+ class Railtie < Rails::Railtie
7
+ initializer "lumos.insert_into_active_record" do |app|
8
+ Lumos::Wrapper.default_options.merge!(app.config.lumos_defaults) if app.config.respond_to?(:lumos_defaults)
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Lumos
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -2,10 +2,20 @@ module Lumos
2
2
  class Wrapper
3
3
  attr_reader :message, :options, :position
4
4
 
5
+ def self.default_options
6
+ @default_options ||= {
7
+ position: :surround,
8
+ delimiter: "#",
9
+ length: 70
10
+ }
11
+ end
12
+
5
13
  def initialize(message, options = {})
6
- @message = message
14
+ options = self.class.default_options.merge(options)
15
+
7
16
  @options = options
8
- @position = options.fetch(:position, :surround).to_sym
17
+ @position = options[:position].to_sym
18
+ @message = message
9
19
 
10
20
  validate_position
11
21
  end
@@ -18,6 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.add_dependency "rumoji", "0.4.1"
21
22
  spec.add_development_dependency "activesupport", "4.2"
22
23
  spec.add_development_dependency "activerecord", "4.2"
23
24
  spec.add_development_dependency "sqlite3", "~> 1.3"
@@ -1,3 +1,5 @@
1
+ #encoding: utf-8
2
+
1
3
  require "spec_helper"
2
4
  require "active_record_helper"
3
5
  require "set"
@@ -5,58 +7,65 @@ require "set"
5
7
  RSpec.describe "Lumos kernel extensions" do
6
8
  context "divider" do
7
9
  it "returns sharps if no arguments defined" do
8
- expect { lumos }.to output("###").to_stdout
10
+ expect { lumos }.to output("###\n").to_stdout
9
11
  end
10
12
 
11
13
  it "returns sharps if only pointer defined" do
12
- expect { lumos :> }.to output("###").to_stdout
14
+ expect { lumos :> }.to output("###\n").to_stdout
13
15
  end
14
16
 
15
17
  it "returns delimiter based string" do
16
- expect { lumos :>, "-" }.to output("---").to_stdout
18
+ expect { lumos :>, "-" }.to output("---\n").to_stdout
17
19
  end
18
20
 
19
21
  it "returns delimiter based string repeated 10 times" do
20
- expect { lumos :>, "@", 10 }.to output("@@@@@@@@@@").to_stdout
22
+ expect { lumos :>, "@", 10 }.to output("@@@@@@@@@@\n").to_stdout
23
+ end
24
+
25
+ it "returns emoji-delimiter repeated 10 times" do
26
+ expect { lumos :>, ":coffee:", 10 }.to output("☕☕☕☕☕☕☕☕☕☕\n").to_stdout
21
27
  end
22
28
  end
23
29
 
24
30
  context "wrapper" do
25
31
  it "returns wrapped messages if no arguments except message defined" do
26
- expect { lumos "Accio" }.to output("#########\n# #\n# Accio #\n# #\n#########").to_stdout
32
+ expect { lumos "Accio" }.to output("#########\n# #\n# Accio #\n# #\n#########\n").to_stdout
27
33
  end
28
34
 
29
35
  it "returns bottom positioned message" do
30
- expect { lumos "Accio", {position: :bottom, delimiter: "@"} }.to output("Accio\n@@@@@").to_stdout
36
+ expect { lumos "Accio", {position: :bottom, delimiter: "@"} }.to output("Accio\n@@@@@\n").to_stdout
37
+ end
38
+
39
+ it "returns an emoji-wrapped messages" do
40
+ expect { lumos "Accio", {delimiter: ":alien:"} }.to output( "👽👽👽👽👽👽👽👽👽\n👽 👽\n👽 Accio 👽\n👽 👽\n👽👽👽👽👽👽👽👽👽\n").to_stdout
31
41
  end
32
42
  end
33
43
 
34
44
  context "objects" do
35
- it "returns wra pped Array" do
36
- expect { lumos %w(One Two Freddy is coming for you Three Four better lock your door ) }.to output("##########################################################################\n# #\n# [\"One\", \"Two\", \"Freddy\", \"is\", \"coming\", \"for\", \"you\", \"Three\", \"Four\" #\n# , \"better\", \"lock\", \"your\", \"door\"] #\n# #\n##########################################################################").to_stdout
45
+ it "returns wrapped Array" do
46
+ expect { lumos %w(One Two Freddy is coming for you Three Four better lock your door ) }.to output("##########################################################################\n# #\n# [\"One\", \"Two\", \"Freddy\", \"is\", \"coming\", \"for\", \"you\", \"Three\", \"Four\" #\n# , \"better\", \"lock\", \"your\", \"door\"] #\n# #\n##########################################################################\n").to_stdout
37
47
  end
38
48
 
39
49
  it "returns wrapped Hash" do
40
50
  domains = {ru: "Russia", th: "Thailand", "com.au" => "Australia", ph: "Philippines"}
41
- expect { lumos domains, {length: 56}}.to output("############################################################\n# #\n# {:ru=>\"Russia\", :th=>\"Thailand\", \"com.au\"=>\"Australia\", #\n# :ph=>\"Philippines\"} #\n# #\n############################################################").to_stdout
51
+ expect { lumos domains, {length: 56} }.to output("############################################################\n# #\n# {:ru=>\"Russia\", :th=>\"Thailand\", \"com.au\"=>\"Australia\", #\n# :ph=>\"Philippines\"} #\n# #\n############################################################\n").to_stdout
42
52
  end
43
53
 
44
54
  it "returns wrapped Set" do
45
- expect { lumos Set.new([1,2,3])}.to output("#####################\n# #\n# #<Set: {1, 2, 3}> #\n# #\n#####################").to_stdout
55
+ expect { lumos Set.new([1,2,3]) }.to output("#####################\n# #\n# #<Set: {1, 2, 3}> #\n# #\n#####################\n").to_stdout
46
56
  end
47
57
 
48
58
  it "returns wrapped Struct" do
49
59
  Struct.new("Customer", :name, :address)
50
- expect { lumos Struct::Customer.new("Dave", "123 Main")}.to output("##############################################################\n# #\n# #<struct Struct::Customer name=\"Dave\", address=\"123 Main\"> #\n# #\n##############################################################").to_stdout
60
+ expect { lumos Struct::Customer.new("Dave", "123 Main") }.to output("##############################################################\n# #\n# #<struct Struct::Customer name=\"Dave\", address=\"123 Main\"> #\n# #\n##############################################################\n").to_stdout
51
61
  end
52
62
 
53
63
  it "returns wrapped OpenStruct" do
54
- expect { lumos OpenStruct.new(country: "Russia", population: 143_975_923)}.to output("########################################################\n# #\n# #<OpenStruct country=\"Russia\", population=143975923> #\n# #\n########################################################").to_stdout
64
+ expect { lumos OpenStruct.new(country: "Russia", population: 143_975_923) }.to output("########################################################\n# #\n# #<OpenStruct country=\"Russia\", population=143975923> #\n# #\n########################################################\n").to_stdout
55
65
  end
56
66
 
57
67
  it "returns wrapped ActiveRecord" do
58
- Struct.new("Customer", :name, :address)
59
- expect { lumos Coffee.new(sort: "Cappuccino", price: 105, saturation: 25)}.to output("#####################################################################\n# #\n# #<Coffee id: nil, sort: \"Cappuccino\", price: 105, saturation: 25> #\n# #\n#####################################################################").to_stdout
68
+ expect { lumos Coffee.new(sort: "Cappuccino", price: 105, saturation: 25) }.to output("#####################################################################\n# #\n# #<Coffee id: nil, sort: \"Cappuccino\", price: 105, saturation: 25> #\n# #\n#####################################################################\n").to_stdout
60
69
  end
61
70
  end
62
71
  end
@@ -3,21 +3,23 @@ require "spec_helper"
3
3
 
4
4
  describe Lumos::Formatters::Base do
5
5
 
6
+ let(:options) { Lumos::Wrapper.default_options }
7
+
6
8
  context "subsidary methods" do
7
9
  it "returns number of message characters" do
8
10
  expect(described_class.new(message: "Cave Inimicum").message_length).to eq(13)
9
11
  end
10
12
 
11
13
  it "returns number of short message lines" do
12
- expect(described_class.new(message: "Colloportus").chopped_message.size).to eq(1)
14
+ expect(described_class.new(message: "Colloportus", length: options[:length]).chopped_message.size).to eq(1)
13
15
  end
14
16
 
15
17
  it "returns number of long message lines" do
16
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").chopped_message.size).to eq(3)
18
+ expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: options[:length]).chopped_message.size).to eq(3)
17
19
  end
18
20
 
19
21
  it "returns messages size based on lenght of first chopped line" do
20
- expect(described_class.new(message: "Confringo").chopped_message_length).to eq(9)
22
+ expect(described_class.new(message: "Confringo", length: options[:length]).chopped_message_length).to eq(9)
21
23
  end
22
24
  end
23
25
 
@@ -4,39 +4,39 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Bottom do
5
5
  context "messages" do
6
6
  it "returns wrapped message" do
7
- expect(described_class.new(message: "Langlock").result).to eq("Langlock\n########")
7
+ expect { lumos "Langlock", position: :bottom }.to output("Langlock\n########\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("Coffee has long had a reputation as being unhealthy. But in almost eve\nry single respect that reputation is backward. The potential health be\nnefits are surprisingly large.\n######################################################################")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :bottom }.to output("Coffee has long had a reputation as being unhealthy. But in almost eve\nry single respect that reputation is backward. The potential health be\nnefits are surprisingly large.\n######################################################################\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("Coffee has long had a reputation as\n being unhealthy. But in almost eve\nry single respect that reputation i\ns backward. The potential health be\nnefits are surprisingly large.\n###################################")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :bottom, length: 35 }.to output("Coffee has long had a reputation as\n being unhealthy. But in almost eve\nry single respect that reputation i\ns backward. The potential health be\nnefits are surprisingly large.\n###################################\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-padding message" do
21
- expect(described_class.new(message: "Levicorpus", padding: 0).result).to eq("Levicorpus\n##########")
21
+ expect { lumos "Langlock", position: :bottom, padding: 0 }.to output("Langlock\n########\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit padding message" do
25
- expect(described_class.new(message: "Levicorpus", padding: 1).result).to eq("Levicorpus\n\n##########")
25
+ expect { lumos "Langlock", position: :bottom, padding: 1 }.to output("Langlock\n\n########\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Levicorpus", padding: 2).result).to eq("Levicorpus\n\n\n##########")
29
+ expect { lumos "Langlock", position: :bottom, padding: 2 }.to output("Langlock\n\n\n########\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  context "delimiters" do
34
34
  it "returns delimiter message" do
35
- expect(described_class.new(message: "Legilimens", delimiter: "☯").result).to eq("Legilimens\n☯☯☯☯☯☯☯☯☯☯")
35
+ expect { lumos "Legilimens", position: :bottom, delimiter: "☯" }.to output("Legilimens\n☯☯☯☯☯☯☯☯☯☯\n").to_stdout
36
36
  end
37
37
 
38
38
  it "returns message with multichar delimiter" do
39
- expect(described_class.new(message: "Legilimens", delimiter: "=->").result).to eq("Legilimens\n=->=->=->=")
39
+ expect { lumos "Legilimens", position: :bottom, delimiter: "=->" }.to output("Legilimens\n=->=->=->=\n").to_stdout
40
40
  end
41
41
  end
42
42
  end
@@ -4,39 +4,39 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Horizontal do
5
5
  context "messages" do
6
6
  it "returns message" do
7
- expect(described_class.new(message: "Meteolojinx Recanto").result).to eq("###################\nMeteolojinx Recanto\n###################")
7
+ expect { lumos "Meteolojinx Recanto", position: :horizontal }.to output("###################\nMeteolojinx Recanto\n###################\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("######################################################################\nCoffee has long had a reputation as being unhealthy. But in almost eve\nry single respect that reputation is backward. The potential health be\nnefits are surprisingly large.\n######################################################################")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :horizontal }.to output("######################################################################\nCoffee has long had a reputation as being unhealthy. But in almost eve\nry single respect that reputation is backward. The potential health be\nnefits are surprisingly large.\n######################################################################\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("###################################\nCoffee has long had a reputation as\n being unhealthy. But in almost eve\nry single respect that reputation i\ns backward. The potential health be\nnefits are surprisingly large.\n###################################")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :horizontal, length: 35 }.to output("###################################\nCoffee has long had a reputation as\n being unhealthy. But in almost eve\nry single respect that reputation i\ns backward. The potential health be\nnefits are surprisingly large.\n###################################\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-padding message" do
21
- expect(described_class.new(message: "Mobilicorpus", padding: 0).result).to eq("############\nMobilicorpus\n############")
21
+ expect { lumos "Mobilicorpus", position: :horizontal, padding: 0 }.to output("############\nMobilicorpus\n############\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit message" do
25
- expect(described_class.new(message: "Mobilicorpus", padding: 1).result).to eq("############\n\nMobilicorpus\n\n############")
25
+ expect { lumos "Mobilicorpus", position: :horizontal, padding: 1 }.to output("############\n\nMobilicorpus\n\n############\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Mobilicorpus", padding: 2).result).to eq("############\n\n\nMobilicorpus\n\n\n############")
29
+ expect { lumos "Mobilicorpus", position: :horizontal, padding: 2 }.to output("############\n\n\nMobilicorpus\n\n\n############\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  context "delimiters" do
34
34
  it "returns delimiter message" do
35
- expect(described_class.new(message: "Mobiliarbus", delimiter: "❄").result).to eq("❄❄❄❄❄❄❄❄❄❄❄\nMobiliarbus\n❄❄❄❄❄❄❄❄❄❄❄")
35
+ expect { lumos "Mobiliarbus", position: :horizontal, delimiter: "❄" }.to output("❄❄❄❄❄❄❄❄❄❄❄\nMobiliarbus\n❄❄❄❄❄❄❄❄❄❄❄\n").to_stdout
36
36
  end
37
37
 
38
38
  it "returns message with multichar delimiter" do
39
- expect(described_class.new(message: "Mobiliarbus", delimiter: "=->").result).to eq("=->=->=->=-\nMobiliarbus\n=->=->=->=-")
39
+ expect { lumos "Mobiliarbus", position: :horizontal, delimiter: "=->" }.to output("=->=->=->=-\nMobiliarbus\n=->=->=->=-\n").to_stdout
40
40
  end
41
41
  end
42
42
  end
@@ -4,33 +4,33 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Left do
5
5
  context "messages" do
6
6
  it "returns wrapped message" do
7
- expect(described_class.new(message: "Engorgio").result).to eq("# Engorgio")
7
+ expect { lumos "Engorgio", position: :left }.to output("# Engorgio\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("# Coffee has long had a reputation as being unhealthy. But in almost eve\n# ry single respect that reputation is backward. The potential health be\n# nefits are surprisingly large.")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :left }.to output("# Coffee has long had a reputation as being unhealthy. But in almost eve\n# ry single respect that reputation is backward. The potential health be\n# nefits are surprisingly large.\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("# Coffee has long had a reputation as\n# being unhealthy. But in almost eve\n# ry single respect that reputation i\n# s backward. The potential health be\n# nefits are surprisingly large.")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :left, length: 35 }.to output("# Coffee has long had a reputation as\n# being unhealthy. But in almost eve\n# ry single respect that reputation i\n# s backward. The potential health be\n# nefits are surprisingly large.\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-digit padding message" do
21
- expect(described_class.new(message: "Episkey", padding: 0).result).to eq("#Episkey")
21
+ expect { lumos "Episkey", position: :left, padding: 0 }.to output("#Episkey\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit padding message" do
25
- expect(described_class.new(message: "Episkey", padding: 1).result).to eq("# Episkey")
25
+ expect { lumos "Episkey", position: :left, padding: 1 }.to output("# Episkey\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Episkey", padding: 2).result).to eq("# Episkey")
29
+ expect { lumos "Episkey", position: :left, padding: 2 }.to output("# Episkey\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  it "returns delimiter message" do
34
- expect(described_class.new(message: "Ennervate", delimiter: "☭").result).to eq("☭ Ennervate")
34
+ expect { lumos "Ennervate", position: :left, delimiter: "☭" }.to output("☭ Ennervate\n").to_stdout
35
35
  end
36
36
  end
@@ -4,34 +4,34 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Right do
5
5
  context "messages" do
6
6
  it "returns wrapped message" do
7
- expect(described_class.new(message: "Ferula").result).to eq("Ferula #")
7
+ expect { lumos "Ferula", position: :right }.to output("Ferula #\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("Coffee has long had a reputation as being unhealthy. But in almost eve #\nry single respect that reputation is backward. The potential health be #\nnefits are surprisingly large. #")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :right }.to output("Coffee has long had a reputation as being unhealthy. But in almost eve #\nry single respect that reputation is backward. The potential health be #\nnefits are surprisingly large. #\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("Coffee has long had a reputation as #\n being unhealthy. But in almost eve #\nry single respect that reputation i #\ns backward. The potential health be #\nnefits are surprisingly large. #")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :right, length: 35 }.to output("Coffee has long had a reputation as #\n being unhealthy. But in almost eve #\nry single respect that reputation i #\ns backward. The potential health be #\nnefits are surprisingly large. #\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-padding message" do
21
- expect(described_class.new(message: "Finite Incantatum", padding: 0).result).to eq("Finite Incantatum#")
21
+ expect { lumos "Finite Incantatum", position: :right, padding: 0 }.to output("Finite Incantatum#\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit padding message" do
25
- expect(described_class.new(message: "Finite Incantatum", padding: 1).result).to eq("Finite Incantatum #")
25
+ expect { lumos "Finite Incantatum", position: :right, padding: 1 }.to output("Finite Incantatum #\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Finite Incantatum", padding: 2).result).to eq("Finite Incantatum #")
29
+ expect { lumos "Finite Incantatum", position: :right, padding: 2 }.to output("Finite Incantatum #\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  it "returns delimiter message" do
34
- expect(described_class.new(message: "Fidelius", delimiter: "->").result).to eq("Fidelius ->")
34
+ expect { lumos "Fidelius", position: :right, delimiter: "->" }.to output("Fidelius ->\n").to_stdout
35
35
  end
36
36
 
37
37
  end
@@ -4,39 +4,39 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Surround do
5
5
  context "messages" do
6
6
  it "returns wrapped message" do
7
- expect(described_class.new(message: "Defodio").result).to eq("###########\n# #\n# Defodio #\n# #\n###########")
7
+ expect { lumos "Defodio" }.to output("###########\n# #\n# Defodio #\n# #\n###########\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("##########################################################################\n# #\n# Coffee has long had a reputation as being unhealthy. But in almost eve #\n# ry single respect that reputation is backward. The potential health be #\n# nefits are surprisingly large. #\n# #\n##########################################################################")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large." }.to output("##########################################################################\n# #\n# Coffee has long had a reputation as being unhealthy. But in almost eve #\n# ry single respect that reputation is backward. The potential health be #\n# nefits are surprisingly large. #\n# #\n##########################################################################\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("#######################################\n# #\n# Coffee has long had a reputation as #\n# being unhealthy. But in almost eve #\n# ry single respect that reputation i #\n# s backward. The potential health be #\n# nefits are surprisingly large. #\n# #\n#######################################")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35 }.to output("#######################################\n# #\n# Coffee has long had a reputation as #\n# being unhealthy. But in almost eve #\n# ry single respect that reputation i #\n# s backward. The potential health be #\n# nefits are surprisingly large. #\n# #\n#######################################\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-digit padding message" do
21
- expect(described_class.new(message: "Densaugeo", padding: 0).result).to eq("###########\n#Densaugeo#\n###########")
21
+ expect { lumos "Densaugeo", padding: 0 }.to output("###########\n#Densaugeo#\n###########\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit padding message" do
25
- expect(described_class.new(message: "Densaugeo", padding: 1).result).to eq("#############\n# #\n# Densaugeo #\n# #\n#############")
25
+ expect { lumos "Densaugeo", padding: 1 }.to output("#############\n# #\n# Densaugeo #\n# #\n#############\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Densaugeo", padding: 2).result).to eq("###############\n# #\n# #\n# Densaugeo #\n# #\n# #\n###############")
29
+ expect { lumos "Densaugeo", padding: 2 }.to output("###############\n# #\n# #\n# Densaugeo #\n# #\n# #\n###############\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  context "delimiters" do
34
34
  it "returns delimiter message" do
35
- expect(described_class.new(message: "Deletrius", delimiter: "❤").result).to eq("❤❤❤❤❤❤❤❤❤❤❤❤❤\n❤ ❤\n❤ Deletrius ❤\n❤ ❤\n❤❤❤❤❤❤❤❤❤❤❤❤❤")
35
+ expect { lumos "Deletrius", delimiter: "❤" }.to output("❤❤❤❤❤❤❤❤❤❤❤❤❤\n❤ ❤\n❤ Deletrius ❤\n❤ ❤\n❤❤❤❤❤❤❤❤❤❤❤❤❤\n").to_stdout
36
36
  end
37
37
 
38
38
  it "returns message with multichar delimiter" do
39
- expect(described_class.new(message: "Deletrius", delimiter: "=->").result).to eq("=->=->=->=->=->=-\n=-> =->\n=-> Deletrius =->\n=-> =->\n=->=->=->=->=->=-")
39
+ expect { lumos "Deletrius", delimiter: "=->" }.to output("=->=->=->=->=->=-\n=-> =->\n=-> Deletrius =->\n=-> =->\n=->=->=->=->=->=-\n").to_stdout
40
40
  end
41
41
  end
42
42
  end
@@ -4,39 +4,39 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Top do
5
5
  context "messages" do
6
6
  it "returns wrapped message" do
7
- expect(described_class.new(message: "Immobulus").result).to eq("#########\nImmobulus")
7
+ expect { lumos "Immobulus", position: :top }.to output("#########\nImmobulus\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("######################################################################\nCoffee has long had a reputation as being unhealthy. But in almost eve\nry single respect that reputation is backward. The potential health be\nnefits are surprisingly large.")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :top }.to output("######################################################################\nCoffee has long had a reputation as being unhealthy. But in almost eve\nry single respect that reputation is backward. The potential health be\nnefits are surprisingly large.\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("###################################\nCoffee has long had a reputation as\n being unhealthy. But in almost eve\nry single respect that reputation i\ns backward. The potential health be\nnefits are surprisingly large.")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :top, length: 35 }.to output("###################################\nCoffee has long had a reputation as\n being unhealthy. But in almost eve\nry single respect that reputation i\ns backward. The potential health be\nnefits are surprisingly large.\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-padding message" do
21
- expect(described_class.new(message: "Imperio", padding: 0).result).to eq("#######\nImperio")
21
+ expect { lumos "Imperio", position: :top }.to output("#######\nImperio\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit padding message" do
25
- expect(described_class.new(message: "Imperio", padding: 1).result).to eq("#######\n\nImperio")
25
+ expect { lumos "Imperio", position: :top, padding: 1 }.to output("#######\n\nImperio\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Imperio", padding: 2).result).to eq("#######\n\n\nImperio")
29
+ expect { lumos "Imperio", position: :top, padding: 2 }.to output("#######\n\n\nImperio\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  context "delimiters" do
34
34
  it "returns delimiter message" do
35
- expect(described_class.new(message: "Impedimenta", delimiter: "★").result).to eq("★★★★★★★★★★★\nImpedimenta")
35
+ expect { lumos "Impedimenta", position: :top, delimiter: "★" }.to output("★★★★★★★★★★★\nImpedimenta\n").to_stdout
36
36
  end
37
37
 
38
38
  it "returns message with multichar delimiter" do
39
- expect(described_class.new(message: "Impedimenta", delimiter: "=->").result).to eq("=->=->=->=-\nImpedimenta")
39
+ expect { lumos "Impedimenta", position: :top, delimiter: "=->" }.to output("=->=->=->=-\nImpedimenta\n").to_stdout
40
40
  end
41
41
  end
42
42
  end
@@ -4,33 +4,33 @@ require "spec_helper"
4
4
  describe Lumos::Formatters::Vertical do
5
5
  context "messages" do
6
6
  it "returns message" do
7
- expect(described_class.new(message: "Obliviate").result).to eq("# Obliviate #")
7
+ expect { lumos "Obliviate", position: :vertical }.to output("# Obliviate #\n").to_stdout
8
8
  end
9
9
 
10
10
  it "returns multiline message" do
11
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.").result).to eq("# Coffee has long had a reputation as being unhealthy. But in almost eve #\n# ry single respect that reputation is backward. The potential health be #\n# nefits are surprisingly large. #")
11
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :vertical }.to output("# Coffee has long had a reputation as being unhealthy. But in almost eve #\n# ry single respect that reputation is backward. The potential health be #\n# nefits are surprisingly large. #\n").to_stdout
12
12
  end
13
13
 
14
14
  it "returns multiline message with defined length" do
15
- expect(described_class.new(message: "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", length: 35).result).to eq("# Coffee has long had a reputation as #\n# being unhealthy. But in almost eve #\n# ry single respect that reputation i #\n# s backward. The potential health be #\n# nefits are surprisingly large. #")
15
+ expect { lumos "Coffee has long had a reputation as being unhealthy. But in almost every single respect that reputation is backward. The potential health benefits are surprisingly large.", position: :vertical, length: 35 }.to output("# Coffee has long had a reputation as #\n# being unhealthy. But in almost eve #\n# ry single respect that reputation i #\n# s backward. The potential health be #\n# nefits are surprisingly large. #\n").to_stdout
16
16
  end
17
17
  end
18
18
 
19
19
  context "paddings" do
20
20
  it "returns zero-padding message" do
21
- expect(described_class.new(message: "Oppugno", padding: 0).result).to eq("#Oppugno#")
21
+ expect { lumos "Oppugno", position: :vertical, padding: 0 }.to output("#Oppugno#\n").to_stdout
22
22
  end
23
23
 
24
24
  it "returns 1-digit padding message" do
25
- expect(described_class.new(message: "Oppugno", padding: 1).result).to eq("# Oppugno #")
25
+ expect { lumos "Oppugno", position: :vertical, padding: 1 }.to output("# Oppugno #\n").to_stdout
26
26
  end
27
27
 
28
28
  it "returns 2-digits padding message" do
29
- expect(described_class.new(message: "Oppugno", padding: 2).result).to eq("# Oppugno #")
29
+ expect { lumos "Oppugno", position: :vertical, padding: 2 }.to output("# Oppugno #\n").to_stdout
30
30
  end
31
31
  end
32
32
 
33
33
  it "returns delimiter message" do
34
- expect(described_class.new(message: "Obscuro", delimiter: "☢").result).to eq("☢ Obscuro ")
34
+ expect { lumos "Obscuro", position: :vertical, delimiter: "☢" }.to output("☢ Obscuro ☢\n").to_stdout
35
35
  end
36
36
  end
@@ -27,4 +27,27 @@ describe Lumos::Wrapper do
27
27
  expect(described_class.new("Aparecium").bottom).to eq("Aparecium\n#########")
28
28
  end
29
29
  end
30
+
31
+ context "default_options" do
32
+ it "returns default positioned message with delimiter changed" do
33
+ described_class.default_options[:delimiter] = "@"
34
+ expect(described_class.new("Avifors").result).to eq("@@@@@@@@@@@\n@ @\n@ Avifors @\n@ @\n@@@@@@@@@@@")
35
+ end
36
+
37
+ it "returns default positioned message with padding changed" do
38
+ described_class.default_options[:padding] = 3
39
+ expect(described_class.new("Avifors").result).to eq("@@@@@@@@@@@@@@@\n@ @\n@ @\n@ @\n@ Avifors @\n@ @\n@ @\n@ @\n@@@@@@@@@@@@@@@")
40
+ end
41
+
42
+ it "returns message with position changed" do
43
+ described_class.default_options[:position] = :horizontal
44
+ expect(described_class.new("Avifors").result).to eq("@@@@@@@\n\n\n\nAvifors\n\n\n\n@@@@@@@")
45
+ end
46
+
47
+ it "returns message with bottom position and emoji delimiter" do
48
+ described_class.default_options[:position] = :bottom
49
+ described_class.default_options[:delimiter] = ":poop:"
50
+ expect(described_class.new("Avifors").result).to eq("Avifors\n\n\n\n💩💩💩💩💩💩💩")
51
+ end
52
+ end
30
53
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lumos
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - query-string
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-16 00:00:00.000000000 Z
11
+ date: 2015-07-10 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rumoji
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.4.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.4.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: activesupport
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +150,7 @@ files:
136
150
  - lib/lumos/formatters/surround.rb
137
151
  - lib/lumos/formatters/top.rb
138
152
  - lib/lumos/formatters/vertical.rb
153
+ - lib/lumos/railtie.rb
139
154
  - lib/lumos/version.rb
140
155
  - lib/lumos/wrapper.rb
141
156
  - lumos.gemspec