prettyprint 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/test.yml +26 -9
- data/README.md +16 -9
- data/lib/prettyprint.rb +7 -5
- data/prettyprint.gemspec +9 -2
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85e19096bea949d9ba4527ab4c725ff93b0cd58607663ddeaf874f594a5ec411
|
4
|
+
data.tar.gz: 4fd1396f96864266b0306943b841f9f5725928fb53438851cd45d595136e402e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01f0fdabe285415df33bc492afb51bd76cea47da6e8d90625cb78138f80a2f8a34cd3c5a0e05b69533d90afd6ebea87227b7d68a9b41a8b691cae0ba12223c7a
|
7
|
+
data.tar.gz: bbc550544885800b388fdb8429e826c8a87b9a22d0fad8a965ab1c86e8c53e4847b83e1802689e7906b35878bf141d4ecd04fb44913620a825279918f4ece1b3
|
data/.github/workflows/test.yml
CHANGED
@@ -1,24 +1,41 @@
|
|
1
1
|
name: test
|
2
2
|
|
3
|
-
on:
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
pull_request:
|
6
|
+
schedule:
|
7
|
+
- cron: '15 3 * * *'
|
4
8
|
|
5
9
|
jobs:
|
6
|
-
|
7
|
-
|
10
|
+
ruby-versions:
|
11
|
+
uses: ruby/actions/.github/workflows/ruby_versions.yml@master
|
12
|
+
with:
|
13
|
+
engine: cruby
|
14
|
+
min_version: 2.5
|
15
|
+
|
16
|
+
test:
|
17
|
+
needs: ruby-versions
|
8
18
|
strategy:
|
9
19
|
matrix:
|
10
|
-
ruby:
|
11
|
-
os: [ ubuntu-latest, macos-latest ]
|
20
|
+
ruby: ${{ fromJson(needs.ruby-versions.outputs.versions) }}
|
21
|
+
os: [ ubuntu-latest, macos-latest, windows-latest ]
|
22
|
+
exclude:
|
23
|
+
- { os: windows-latest , ruby: head }
|
24
|
+
include:
|
25
|
+
- { os: windows-latest , ruby: mingw }
|
26
|
+
- { os: windows-latest , ruby: mswin }
|
12
27
|
runs-on: ${{ matrix.os }}
|
13
28
|
steps:
|
14
|
-
- uses: actions/checkout@
|
29
|
+
- uses: actions/checkout@v4
|
15
30
|
- name: Set up Ruby
|
16
31
|
uses: ruby/setup-ruby@v1
|
17
32
|
with:
|
18
33
|
ruby-version: ${{ matrix.ruby }}
|
19
34
|
- name: Install dependencies
|
20
|
-
run:
|
21
|
-
|
22
|
-
|
35
|
+
run: bundle install
|
36
|
+
- name: Build
|
37
|
+
run: rake build
|
23
38
|
- name: Run test
|
24
39
|
run: rake test
|
40
|
+
- name: Installation test
|
41
|
+
run: gem install pkg/*.gem
|
data/README.md
CHANGED
@@ -1,8 +1,20 @@
|
|
1
|
-
#
|
1
|
+
# PrettyPrint
|
2
2
|
|
3
|
-
|
3
|
+
This class implements a pretty printing algorithm. It finds line breaks and
|
4
|
+
nice indentations for grouped structure.
|
4
5
|
|
5
|
-
|
6
|
+
By default, the class assumes that primitive elements are strings and each
|
7
|
+
byte in the strings have single column in width. But it can be used for
|
8
|
+
other situations by giving suitable arguments for some methods:
|
9
|
+
|
10
|
+
* newline object and space generation block for PrettyPrint.new
|
11
|
+
* optional width argument for PrettyPrint#text
|
12
|
+
* PrettyPrint#breakable
|
13
|
+
|
14
|
+
There are several candidate uses:
|
15
|
+
|
16
|
+
* text formatting using proportional fonts
|
17
|
+
* multibyte characters which has columns different to number of bytes
|
6
18
|
|
7
19
|
## Installation
|
8
20
|
|
@@ -20,10 +32,6 @@ Or install it yourself as:
|
|
20
32
|
|
21
33
|
$ gem install prettyprint
|
22
34
|
|
23
|
-
## Usage
|
24
|
-
|
25
|
-
TODO: Write usage instructions here
|
26
|
-
|
27
35
|
## Development
|
28
36
|
|
29
37
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -32,5 +40,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
40
|
|
33
41
|
## Contributing
|
34
42
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
36
|
-
|
43
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/ruby/prettyprint.
|
data/lib/prettyprint.rb
CHANGED
@@ -23,16 +23,18 @@
|
|
23
23
|
#
|
24
24
|
# == References
|
25
25
|
# Christian Lindig, Strictly Pretty, March 2000,
|
26
|
-
#
|
26
|
+
# https://lindig.github.io/papers/strictly-pretty-2000.pdf
|
27
27
|
#
|
28
28
|
# Philip Wadler, A prettier printer, March 1998,
|
29
|
-
#
|
29
|
+
# https://homepages.inf.ed.ac.uk/wadler/topics/language-design.html#prettier
|
30
30
|
#
|
31
31
|
# == Author
|
32
32
|
# Tanaka Akira <akr@fsij.org>
|
33
33
|
#
|
34
34
|
class PrettyPrint
|
35
35
|
|
36
|
+
VERSION = "0.2.0"
|
37
|
+
|
36
38
|
# This is a convenience method which is same as follows:
|
37
39
|
#
|
38
40
|
# begin
|
@@ -102,7 +104,7 @@ class PrettyPrint
|
|
102
104
|
|
103
105
|
# The maximum width of a line, before it is separated in to a newline
|
104
106
|
#
|
105
|
-
# This defaults to 79, and should be
|
107
|
+
# This defaults to 79, and should be an Integer
|
106
108
|
attr_reader :maxwidth
|
107
109
|
|
108
110
|
# The value that is appended to +output+ to add a new line.
|
@@ -110,7 +112,7 @@ class PrettyPrint
|
|
110
112
|
# This defaults to "\n", and should be String
|
111
113
|
attr_reader :newline
|
112
114
|
|
113
|
-
# A lambda or Proc, that takes one argument, of
|
115
|
+
# A lambda or Proc, that takes one argument, of an Integer, and returns
|
114
116
|
# the corresponding number of spaces.
|
115
117
|
#
|
116
118
|
# By default this is:
|
@@ -340,7 +342,7 @@ class PrettyPrint
|
|
340
342
|
#
|
341
343
|
# Arguments:
|
342
344
|
# * +sep+ String of the separator
|
343
|
-
# * +width+
|
345
|
+
# * +width+ Integer width of the +sep+
|
344
346
|
# * +q+ parent PrettyPrint object, to base from
|
345
347
|
def initialize(sep, width, q)
|
346
348
|
@obj = sep
|
data/prettyprint.gemspec
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
+
name = File.basename(__FILE__, ".gemspec")
|
2
|
+
version = ["lib", Array.new(name.count("-")+1).join("/")].find do |dir|
|
3
|
+
break File.foreach(File.join(__dir__, dir, "#{name.tr('-', '/')}.rb")) do |line|
|
4
|
+
/^\s*VERSION\s*=\s*"(.*)"/ =~ line and break $1
|
5
|
+
end rescue nil
|
6
|
+
end
|
7
|
+
|
1
8
|
Gem::Specification.new do |spec|
|
2
|
-
spec.name =
|
3
|
-
spec.version =
|
9
|
+
spec.name = name
|
10
|
+
spec.version = version
|
4
11
|
spec.authors = ["Tanaka Akira"]
|
5
12
|
spec.email = ["akr@fsij.org"]
|
6
13
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prettyprint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tanaka Akira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-11-07 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Implements a pretty printing algorithm for readable structure.
|
14
14
|
email:
|
@@ -17,6 +17,7 @@ executables: []
|
|
17
17
|
extensions: []
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
|
+
- ".github/dependabot.yml"
|
20
21
|
- ".github/workflows/test.yml"
|
21
22
|
- ".gitignore"
|
22
23
|
- Gemfile
|
@@ -49,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
49
50
|
- !ruby/object:Gem::Version
|
50
51
|
version: '0'
|
51
52
|
requirements: []
|
52
|
-
rubygems_version: 3.
|
53
|
+
rubygems_version: 3.5.0.dev
|
53
54
|
signing_key:
|
54
55
|
specification_version: 4
|
55
56
|
summary: Implements a pretty printing algorithm for readable structure.
|