dumb-logger 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2a310511e9401162dbea1264cfc0688d9bd1b4fb
4
+ data.tar.gz: 811167e870e502ece41b9ec4a0172036c506ec84
5
+ SHA512:
6
+ metadata.gz: 3c6dc6168a885f2c18284fdc58cafa7cb14dee853795216007462e702717ca4530f1dc4268c25b90d6e2b755d5a5dd119d2613495a4a8a94f31fcf8b90e8fdfc
7
+ data.tar.gz: 1004d15fe2bf9e469e47fa90621821ef47ff877c41289c67b115a73357ab4fb62ddbd7cb1aca9453ee29bbec08545b064fcc9b39c4d2cf72bcb2495199e01e6b
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.yardopts ADDED
@@ -0,0 +1,7 @@
1
+ --title 'DumbLogger Simple Logger'
2
+ --no-private
3
+ --charset utf-8
4
+ --markup markdown
5
+ --files 'LICENCE*'
6
+ 'lib/**/*.rb'
7
+ 'features/**/*.rb'
data/Gemfile ADDED
@@ -0,0 +1,37 @@
1
+ source('https://rubygems.org/')
2
+
3
+ #
4
+ # All the dependencies *were* in jene.gemspec, but Bundler is
5
+ # remarkably stupid about gems needed *by* the gemspec.
6
+ #
7
+ #gemspec
8
+
9
+ RUBY_ENGINE = 'ruby' unless (defined?(RUBY_ENGINE))
10
+
11
+ group(:default, :development, :test) do
12
+ gem('bundler', '>= 1.0.7')
13
+ gem('versionomy', '>= 0.4.4')
14
+ gem('debugger', '>= 0',
15
+ :platforms => [
16
+ :mri_19,
17
+ :mri_20,
18
+ ])
19
+ gem('ruby-debug', '>= 0',
20
+ :platforms => [
21
+ :mri_18,
22
+ ])
23
+
24
+ gem('dumb-logger',
25
+ :path => '.')
26
+ end
27
+
28
+ group(:test, :development) do
29
+ gem('aruba')
30
+ gem('cucumber')
31
+ gem('rake')
32
+ gem('redcarpet', '< 3.0.0')
33
+ gem('test-unit',
34
+ :require => 'test/unit')
35
+ gem('rdoc')
36
+ gem('yard', '~> 0.8.6')
37
+ end
data/LICENCE.md ADDED
@@ -0,0 +1,203 @@
1
+ ```
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
203
+ ```
data/README.md ADDED
@@ -0,0 +1,166 @@
1
+ # DumbLogger
2
+
3
+ *As though there weren't enough Ruby gems for logging.. here's another one!*
4
+
5
+ `DumbLogger` is a very simple package for logging messages, typically
6
+ for command-line applications. You simply instantiate the class, set
7
+ the maximum log-level required for messages to be displayed, and
8
+ subsequently invoke the `#message` method with the text and
9
+ appropriate level associated with it. If the logger's maximum level
10
+ is greater than or equal to the message's, the text will be written to
11
+ the logging sink.
12
+
13
+ Alternatively, you can instead treat logging levels as bitmasks
14
+ (*e.g.*, "bit 3 means log network activity"), and messages will be
15
+ sent to the logging sink if any of the set bits in their mask are also
16
+ set in the logger's mask.
17
+
18
+ Messages with a loglevel (or mask) of `0` **always** get written to
19
+ the sink.
20
+
21
+ By default, `DumbLogger` uses a sink of `$stderr`, but you can tell it
22
+ to write messages somewhere else. If the sink is a file that needs to
23
+ be opened, by default new text will be appended to any existing
24
+ content, but you can cause it to rewind and truncate the file before
25
+ writing. If you change sinks and the current one was opened as a
26
+ file, it will be closed before switching to the new sink.
27
+
28
+ Sinks can be filenames, symbols, or streams (instances of `IO`);
29
+ append-mode doesn't apply to streams.
30
+
31
+ Two special sink symbols are recognised: **:$stderr** and
32
+ **:$stdout**. Assigning the logger sink to either of these will
33
+ result in the sink stream being re-evaluated on each and every message
34
+ transmission. This can be useful if `$stderr` or `$stdout` might get
35
+ redirected during application operation.
36
+
37
+ Text is logged using the `#message` method, which takes an arbitrary
38
+ number of strings, symbols, integers, and hashes as arguments.
39
+
40
+ * The last integer in the argument list will be used as the message's
41
+ level;
42
+ * Any hashes in the argument list will be merged and used as options;
43
+ and
44
+ * If the argument contains multiple strings, each one will be written
45
+ on a separate line.
46
+
47
+ Global options that can be set with `#new` include:
48
+
49
+ * whether files should be opened in append mode;
50
+ * whether loglevels are integers or bitmasks;
51
+ * what the maximum logging level, or active logging bitmask, is;
52
+ * where messages should be sent (the sink); and
53
+ * a string that should be prefixed to each line written to the sink.
54
+
55
+ You can define labels (names) for logging level values, so you can use
56
+ them in subsequent calls. In addition, defining a named level creates
57
+ that method on the instance tied to that level. That is, these are
58
+ equivalent:
59
+
60
+ ```
61
+ daml = DumbLogger.new(:labels => { :info => 0, :debug => 4 })
62
+ daml.info('Level 0 message')
63
+ daml.debug('Level 4 message')
64
+
65
+ daml = DumbLogger.new
66
+ daml.message(0, 'Level 0 message')
67
+ daml.message(4, 'Level 4 message')
68
+ ```
69
+
70
+ Options that can be set on a per-`#message` basis include:
71
+
72
+ * a prefix string specific to the message (temporarily overriding the
73
+ default set at instantiation time); and
74
+ * whether the (last) line of the message should be terminated with a
75
+ newline or not. (Useful for multi-stage "`Doing foo: done`" type
76
+ messages.) **Note:** This is done by either including `DumbLogger::NO_NL`
77
+ in the argument list, or `{ :newline => false }` as part of an option
78
+ hash.
79
+
80
+ ## Installation
81
+
82
+ Add this line to your application's Gemfile:
83
+
84
+ ```ruby
85
+ gem('dumb-logger')
86
+ ```
87
+
88
+ And then execute:
89
+
90
+ $ bundle
91
+
92
+ Or install it yourself as:
93
+
94
+ $ gem install dumb-logger
95
+
96
+ ## Usage
97
+
98
+ ```ruby
99
+ require('dumb-logger')
100
+
101
+ #
102
+ # Create a logger with integer levels, a max level of 5, and
103
+ # everything else defaulted:
104
+ #
105
+ duml = DumbLogger.new(:loglevel => 5)
106
+
107
+ #
108
+ # Will not be written to the sink ($stderr):
109
+ #
110
+ duml.message(6, 'Silent message!')
111
+
112
+ #
113
+ # Will be written to the sink no matter what:
114
+ #
115
+ # => "Logger started! Neener, neener!\n"
116
+ #
117
+ duml.message(0, 'Logger started! Neener, neener!')
118
+
119
+ #
120
+ # Two lines will be logged with the prefix '[DEMO] ':
121
+ #
122
+ # => "[DEMO] This is line 1\n[DEMO] This is line 2\n"
123
+ #
124
+ # Note that the default loglevel is 0, which means 'always send'.
125
+ #
126
+ duml.message('This is line 1', { :prefix => '[DEMO] ' }, 'This is line 2')
127
+
128
+ #
129
+ # Two lines will be sent to the sink, but the second one will *not*
130
+ # end with a newline:
131
+ #
132
+ # => "This will destroy your life.\nAre you sure? "
133
+ #
134
+ duml.message(DumbLogger::NO_NL,
135
+ 'This will destroy your life',
136
+ 'Are you sure? ')
137
+ ```
138
+
139
+ ## Contributing
140
+
141
+ 1. Fork it ( https://github.com/RoUS/dumb-logger/fork )
142
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
143
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
144
+ 4. Push to the branch (`git push origin my-new-feature`)
145
+ 5. Create a new Pull Request
146
+
147
+ ## Licence
148
+
149
+ `DumbLogger` is copyright © 2015 by Ken Coar, and is made available
150
+ under the terms of the Apache Licence 2.0:
151
+
152
+ ```
153
+ Copyright © 2015 Ken Coar
154
+
155
+ Licensed under the Apache License, Version 2.0 (the "License");
156
+ you may not use this file except in compliance with the License.
157
+ You may obtain a copy of the License at
158
+
159
+ http://www.apache.org/licenses/LICENSE-2.0
160
+
161
+ Unless required by applicable law or agreed to in writing, software
162
+ distributed under the License is distributed on an "AS IS" BASIS,
163
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
164
+ See the License for the specific language governing permissions and
165
+ limitations under the License.
166
+ ```
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ # -*- coding: utf-8 -*-
2
+ #--
3
+ # Copyright © 2015 Ken Coar
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #++
17
+
18
+ require('rubygems')
19
+ require('fileutils')
20
+
21
+ Proc.new {
22
+ libdir = File.join(File.dirname(__FILE__), 'lib')
23
+ xlibdir = File.expand_path(libdir)
24
+ $:.unshift(xlibdir) unless ($:.include?(libdir) || $:.include?(xlibdir))
25
+ }.call
26
+
27
+ require('dumb-logger')
28
+
29
+ require('rake')
30
+
31
+ topdir = File.dirname(__FILE__)
32
+
33
+ include Rake::DSL
34
+
35
+ require('bundler/gem_tasks')
36
+
37
+ require('rake/testtask')
38
+ Rake::TestTask.new do |test|
39
+ test.libs << 'lib' << 'test'
40
+ test.pattern = 'test/**/test_*.rb'
41
+ test.verbose = true
42
+ end
43
+
44
+ require('cucumber/rake/task')
45
+ Cucumber::Rake::Task.new(:features)
46
+
47
+ task(:default => :test)
48
+
49
+ require('yard')
50
+ #require('yard-method-overrides')
51
+ YARD::Rake::YardocTask.new
52
+
53
+ Dir['tasks/**/*.rake'].each { |t| load t }