18 Commits

Author SHA1 Message Date
kojix2
19f05e57ac v0.4.4 2022-08-02 17:05:30 +09:00
kojix2
f11fd6babb Consistent variable names 2022-08-02 16:58:48 +09:00
kojix2
9d69c4322c Make configuration files available (#30) 2022-07-31 22:37:50 +09:00
kojix2
41c0d37a13 Friendly error messages 2022-05-25 16:24:13 +09:00
kojix2
a1dcc532ea Friendly error messages 2022-05-25 16:03:33 +09:00
kojix2
523700348c Create doc.yml 2022-03-24 18:47:41 +09:00
kojix2
e34ab2b097 Update README.md
Do you need commit rights to my repository?
Do you want to get admin rights and take over the project?
If so, please feel free to contact kojix2.
2022-02-13 13:05:13 +09:00
kojix2
f8fe010d27 Add Ruby3.1 to CI (#29) 2021-12-30 11:54:15 +09:00
kojix2
e76d4f279e v0.4.3 2021-11-19 14:09:46 +09:00
kojix2
3a1a29424d Remove add_development_dependency from gem 2021-11-19 14:03:57 +09:00
kojix2
b78da2388a Rubocop auto correct 2021-11-19 13:56:09 +09:00
KIKISeries
a7bb75e87d Fix a typo
S -> s
2021-07-14 09:56:47 +09:00
kojix2
ca9f97a7dc Specify the version of UnicodePlot 2021-07-12 14:56:41 +09:00
kojix2
f67a5ce913 Add comments on the run_as_executable variable 2021-07-12 14:49:34 +09:00
kojix2
dbbfd366be Remove unused variable 2021-07-11 08:59:44 +09:00
kojix2
42cadee553 Improved CI
Remove needless line
2021-07-11 08:43:47 +09:00
kojix2
e689c69838 Update CI
* Enable bundler-cache
2021-07-11 08:38:05 +09:00
kojix2
c53169e9ee Update README.md (#24) 2021-07-03 07:22:19 +09:00
10 changed files with 133 additions and 21 deletions

View File

@@ -6,13 +6,12 @@ jobs:
runs-on: ${{ matrix.os }}-latest
strategy:
matrix:
os: ['ubuntu', 'macos']
ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0' ]
os: [ 'ubuntu', 'macos' ]
ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0', '3.1' ]
steps:
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- run: gem install bundler
- run: bundle install
bundler-cache: true
- run: bundle exec rake test

23
.github/workflows/doc.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: doc
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ruby/setup-ruby@v1
with:
ruby-version: 3.1
- name: Generate document
run: gem install -N yard && yard doc
- name: Publish Documentation on GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./doc

View File

@@ -4,3 +4,9 @@ source 'https://rubygems.org'
# Specify your gem's dependencies in youplot.gemspec
gemspec
group :test do
gem 'rake'
gem 'simplecov'
gem 'test-unit'
end

View File

@@ -241,6 +241,10 @@ bundle exec rake install # Installation from source code
bundle exec exe/uplot # Run youplot (Try out the edited code)
```
Do you need commit rights to my repository?
Do you want to get admin rights and take over the project?
If so, please feel free to contact us.
### Acknowledgements
* [sampo grafiikka](https://jypg.net/sampo_grafiikka) - Project logo creation

View File

@@ -6,6 +6,12 @@ require_relative 'youplot/parameters'
require_relative 'youplot/command'
module YouPlot
# @run_as_executable = true / false
# YouPlot behaves slightly differently when run as a command line tool
# and when run as a script (e.g. for testing). In the event of an error,
# when run as a command line tool, YouPlot will display a short error message
# and exit abnormally. When run as a script, it will just raise an error.
@run_as_executable = false
class << self
attr_accessor :run_as_executable
@@ -13,5 +19,4 @@ module YouPlot
@run_as_executable
end
end
@run_as_executable = false
end

View File

@@ -127,11 +127,10 @@ module YouPlot
def plot_xyxy(data, method1, params)
headers = data.headers
series = data.series
series2 = data.series
.map { |s| s.map(&:to_f) }
.each_slice(2).to_a
method2 = get_method2(method1)
series.map! { |s| s.map(&:to_f) }
series2 = series.each_slice(2).to_a
series = nil
params.name ||= headers[0] if headers
params.xlim ||= series2.map(&:first).flatten.minmax # why need?
params.ylim ||= series2.map(&:last).flatten.minmax # why need?

View File

@@ -40,6 +40,24 @@ module YouPlot
return
end
# config command
if @command == :config
if ENV['MYYOUPLOTRC']
puts "config file : #{ENV['MYYOUPLOTRC']}"
puts parser.config.inspect
else
puts <<~EOS
You don't have a config file. The default config file paths are:
./.youplot.yml, ./.youplotrc, ~/.youplot.yml, ~/.youplotrc
You can specify a config file with the environment variable MYYOUPLOTRC.
File format is YAML. For example:
width : 40
height : 20
EOS
end
return
end
# progressive mode
if options[:progressive]
stop = false
@@ -63,9 +81,15 @@ module YouPlot
# normal mode
else
# Sometimes the input file does not end with a newline code.
while (input = Kernel.gets(nil))
begin
begin
input = Kernel.gets(nil)
rescue Errno::ENOENT => e
warn e.message
next
end
main(input)
end
end until input
end
end
@@ -135,7 +159,12 @@ module YouPlot
rescue CSV::MalformedCSVError => e
warn 'Failed to parse the text. '
warn 'Please try to set the correct character encoding with --encoding option.'
raise e
warn e.backtrace.grep(/youplot/).first
exit 1
rescue ArgumentError => e
warn 'Failed to parse the text. '
warn e.backtrace.grep(/youplot/).first
exit 1
end
data

View File

@@ -9,7 +9,8 @@ module YouPlot
class Error < StandardError; end
attr_reader :command, :options, :params,
:main_parser, :sub_parser
:main_parser, :sub_parser,
:config_file, :config
def initialize
@command = nil
@@ -28,6 +29,55 @@ module YouPlot
)
@params = Parameters.new
if @config_file = find_config_file
ENV['MYYOUPLOTRC'] = @config_file
@config = read_config_file(config_file)
configure(config)
end
end
def candidate_paths
paths = []
paths << ENV['MYYOUPLOTRC'] if ENV['MYYOUPLOTRC']
paths << '.youplot.yml'
paths << '.youplotrc'
paths << File.join(ENV['HOME'], '.youplotrc') if ENV['HOME']
paths << File.join(ENV['HOME'], '.youplot.yml') if ENV['HOME']
paths
end
def find_config_file
config_file_path = nil
candidate_paths.each do |file|
path = File.expand_path(file)
if File.exist?(path)
config_file_path = path
break
end
end
config_file_path
end
def read_config_file(path)
require 'yaml'
YAML.load_file(path)
end
def configure(config)
option_members = @options.members
param_members = @params.members
# It would be more useful to be able to configure by plot type
config.each do |k, v|
k = k.to_sym
if option_members.include?(k)
@options[k] = v
elsif param_members.include?(k)
@params[k] = v
else
raise Error, "Unknown option/param: #{k}"
end
end
end
def create_base_parser
@@ -95,7 +145,7 @@ module YouPlot
parser.on('-M', '--monochrome', TrueClass, 'no colouring even if writing to a tty') do |_v|
UnicodePlot::IOContext.define_method(:color?) { false } # FIXME
end
parser.on('--encoding STR', String, 'Specify the input encoding') do |v|
parser.on('--encoding STR', String, 'specify the input encoding') do |v|
options[:encoding] = v
end
# Optparse adds the help option, but it doesn't show up in usage.
@@ -277,6 +327,8 @@ module YouPlot
options[:color_names] = v
end
when :config
else
error_message = "uplot: unrecognized command '#{command}'"
if YouPlot.run_as_executable?

View File

@@ -1,5 +1,5 @@
# frozen_string_literal: true
module YouPlot
VERSION = '0.4.2'
VERSION = '0.4.4'
end

View File

@@ -19,10 +19,5 @@ Gem::Specification.new do |spec|
spec.executables = %w[uplot youplot]
spec.require_paths = ['lib']
spec.add_runtime_dependency 'unicode_plot'
spec.add_development_dependency 'bundler'
spec.add_development_dependency 'rake'
spec.add_development_dependency 'rubocop'
spec.add_development_dependency 'simplecov'
spec.add_development_dependency 'test-unit'
spec.add_dependency 'unicode_plot', '>= 0.0.5'
end