artsy 0.3.0 → 0.3.1

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
  SHA256:
3
- metadata.gz: 5d9f9107cc9594dc3be199a389a3862e5aacd1b075bbb9437f08f47b0e551c6f
4
- data.tar.gz: 49928239532a3438978fb5c2ddbed1f4317540cb3926252b3e9ee3330c130cc3
3
+ metadata.gz: 14db637c153d6dce542eacc55e154dc2dd3a6135894370a4566dd3121e659b95
4
+ data.tar.gz: 1562e5f4683a7fddc5312e36a48badf3e2e853a4b932b74e99da3dd41849455a
5
5
  SHA512:
6
- metadata.gz: 7ca40134ed0dde5d153d5582667b3ce9588a96f7cf6735f84ad8229fa6f71e43350848b7449e7400c3e305d4a13f9ba4af7f0fa58775390b2a6a38627cef7497
7
- data.tar.gz: 92a22269cefe6bf1420c3912ee2f77be11b94c51f5b5a695041466c14ff7b64af3558fa9e3ce80472eee21b881742de39805d664adf0fe077b9562ba30554751
6
+ metadata.gz: c38b8fbf673f19350da3b1caef2c49ad41dcc39ed67dc6d1f5a871d1dae562e224dd2e02f164c74bcdbf9e2ee86cfd8c7073b517cd5138056cd31831c2dd95a3
7
+ data.tar.gz: 3911cdd115b9f8ab118b1d312793c95f8f84c00605efc8be601ccfb865ac4910a33c874fe8210fc99c7172958e32a5dde77e1b26a9427da1061867f05ddf7fe5
data/lib/artsy.rb CHANGED
@@ -7,43 +7,7 @@
7
7
 
8
8
  class Artsy
9
9
  # main class
10
- class Handler
11
- # subclass: contains some preset argumenterror cases
12
- def self.rgbOutOfRange(mode, r, g, b)
13
- # HACK: Change mode in the script to change how your artsy install deals with errors.
14
- if mode == "strict"
15
- # strict: raise an argument error exception without catching
16
- limit = 255 # set limit
17
- unless r <= limit and r >= 0
18
- # fail if r exceeds limit or if lower than 0.
19
- raise ArgumentError.new "'r' value out of range. Must be between 0-255 (you entered #{r})."
20
- end
21
- unless g <= limit and g >= 0
22
- # fail for green
23
- raise ArgumentError.new "'g' value out of range. Must be between 0-255 (you entered #{g})."
24
- end
25
- unless b <= limit and b >= 0
26
- # fail for blue
27
- raise ArgumentError.new "'b' value out of range. Must be between 0-255 (you entered #{b})."
28
- end
29
- elsif mode == "chill"
30
- # chill: Print a warning message to stderr, but don't raise exception.
31
- limit = 255
32
- unless r <= limit and r >= 0
33
- # warn for red
34
- STDERR.puts "WARNING: red value out of range... (#{r})"
35
- end
36
- unless g <= limit and g >= 0
37
- # warn for green
38
- STDERR.puts "WARNING: green value out of range... (#{g})"
39
- end
40
- unless b <= limit and b >= 0
41
- # warn for blue
42
- STDERR.puts "WARNING: blue value out of range... (#{b})"
43
- end
44
- end
45
- end
46
- end
10
+ require 'artsy/devel/handler'
47
11
  def self.out(text, colortype, r = 0, g = 0, b = 0, color: "none", formatting: "none")
48
12
  definedColours = ["\033[0m", "\033[31m", "\033[32m", "\033[93m", "\033[91m", "\033[92m", "\033[96m"]
49
13
  # print colored/formatted text (either from the preset list or with truecolors)
@@ -72,28 +36,31 @@ class Artsy
72
36
  end
73
37
  elsif colortype == "true"
74
38
  # before doing anything, ensure all rgb values are within range
75
- Handler.rgbOutOfRange("strict", r, g, b) # calls the handler check and passes rgb
39
+ ArtsyDev::Handler.rgbOutOfRange("strict", r, g, b) # calls the handler check and passes rgb
76
40
  # print with rgb
77
41
  printcolor = "\033[38;2;#{r};#{g};#{b}m"
78
42
  else
79
43
  # fail
80
44
  raise ArgumentError.new "Invalid colortype defined (#{colortype})."
81
45
  end
82
- if formatting == "none"
83
- puts "#{printcolor}#{text}#{definedColours[0]}" # done!
84
- elsif formatting == "bold"
85
- puts "#{printcolor}\033[1m#{text}#{definedColours[0]}"
86
- elsif formatting == "underline"
87
- puts "#{printcolor}\033[4m#{text}#{definedColours[0]}"
88
- elsif formatting == "italics"
89
- # WARNING: Not widely supported by terminal emulators.
90
- puts "#{printcolor}\033[3m#{text}#{definedColours[0]}"
46
+ case formatting
47
+ when "none"
48
+ puts "#{printcolor}#{text}#{definedColours[0]}" # done!
49
+ when "bold"
50
+ puts "#{printcolor}\033[1m#{text}#{definedColours[0]}"
51
+ when "underline", "ul"
52
+ puts "#{printcolor}\033[4m#{text}#{definedColours[0]}"
53
+ when "italics"
54
+ # WARNING: Not widely supported by terminal emulators.
55
+ puts "#{printcolor}\033[3m#{text}#{definedColours[0]}"
56
+ else
57
+ raise ArgumentError.new "Invalid formatting option set (#{formatting})."
91
58
  end
92
59
  end
93
60
  def self.gradientOut(text, r1, g1, b1, r2, g2, b2, stepping, debug = 0)
94
61
  # before doing anything, check both rgb sets
95
- Handler.rgbOutOfRange("strict", r1, g1, b1)
96
- Handler.rgbOutOfRange("strict", r2, g2, b2)
62
+ ArtsyDev::Handler.rgbOutOfRange("strict", r1, g1, b1)
63
+ ArtsyDev::Handler.rgbOutOfRange("strict", r2, g2, b2)
97
64
  # prints text with a gradient
98
65
  # increases every value by stepping per character
99
66
  arr_Text = text.split("") # split text into array of characters
@@ -0,0 +1,40 @@
1
+ class ArtsyDev
2
+ # parent class as a namespace
3
+ class Handler
4
+ # subclass: contains some preset argumenterror cases
5
+ def self.rgbOutOfRange(mode, r, g, b)
6
+ # HACK: Change mode in the script to change how your artsy install deals with errors.
7
+ if mode == "strict"
8
+ # strict: raise an argument error exception without catching
9
+ limit = 255 # set limit
10
+ unless r <= limit and r >= 0
11
+ # fail if r exceeds limit or if lower than 0.
12
+ raise ArgumentError.new "'r' value out of range. Must be between 0-255 (you entered #{r})."
13
+ end
14
+ unless g <= limit and g >= 0
15
+ # fail for green
16
+ raise ArgumentError.new "'g' value out of range. Must be between 0-255 (you entered #{g})."
17
+ end
18
+ unless b <= limit and b >= 0
19
+ # fail for blue
20
+ raise ArgumentError.new "'b' value out of range. Must be between 0-255 (you entered #{b})."
21
+ end
22
+ elsif mode == "chill"
23
+ # chill: Print a warning message to stderr, but don't raise exception.
24
+ limit = 255
25
+ unless r <= limit and r >= 0
26
+ # warn for red
27
+ STDERR.puts "WARNING: red value out of range... (#{r})"
28
+ end
29
+ unless g <= limit and g >= 0
30
+ # warn for green
31
+ STDERR.puts "WARNING: green value out of range... (#{g})"
32
+ end
33
+ unless b <= limit and b >= 0
34
+ # warn for blue
35
+ STDERR.puts "WARNING: blue value out of range... (#{b})"
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
data/lib/artsy/menu.rb ADDED
@@ -0,0 +1,72 @@
1
+ ########################################################################
2
+ ### menu.rb ###
3
+ ########################################################################
4
+ ### Allows you to easily create menus in your terminal programs. ###
5
+ ### Developed by Brett. (https://github.com/notronaldmcdonald) ###
6
+ ########################################################################
7
+
8
+ class Menu
9
+ def initialize(title, opts = 3, selectMode = "int")
10
+ # you can set title and no. of opts for your menu object
11
+ @menutitle = title
12
+ @optstrings = Array.new(opts) # create an array for each option
13
+ @optids = Array.new(opts)
14
+ maxopts = opts - 1 # for use in the loop
15
+ for i in 0..maxopts
16
+ # cycle through the number of options, generating a default string for each
17
+ @optstrings[i] = "Option #{i}"
18
+ @optids[i] = i + 1
19
+ end # end of loop
20
+ @methodLoader = Linkage.new(@optids.count) # create an object, passing all necessary arguments to it
21
+ end # end of method
22
+
23
+ def setOpt(index, value)
24
+ # set the value of an option
25
+ index_real = index - 1
26
+ @optstrings[index_real] = "#{value}"
27
+ end
28
+
29
+ def show()
30
+ # print menu
31
+ puts "#{@menutitle}"
32
+ puts ""
33
+ for i in 1..@optids.count
34
+ # print each option
35
+ n = i - 1 # to access strings via index
36
+ puts "#{i}) #{@optstrings[n]}" # print the option
37
+ end
38
+ puts ""
39
+ puts "Enter your selection: "
40
+ @choice = gets.chomp
41
+ puts "You entered #{@choice}."
42
+ # now, we'll run some logic to ensure the choice was in @optids, then we can run the user's code!
43
+ @choice = Integer(@choice) # make sure it is int
44
+ @choice = @choice - 1 # convert to real
45
+ @methodLoader.run(@choice)
46
+ end # end of method
47
+
48
+ def assign(option, mname)
49
+ # a wrapper function to assign a method to an option
50
+ trueOpt = option - 1 # do some math
51
+ @methodLoader.bindMethod(trueOpt, mname)
52
+ end
53
+
54
+ class Linkage
55
+ # this private class contains functions for binding functions to an optid
56
+ def initialize(optsize)
57
+ # initializing the object, setting up the callbackMethods instance array based on optsize
58
+ @callbackMethods = Array.new(optsize)
59
+ end # simple method
60
+
61
+ def bindMethod(toOpt, mname)
62
+ # binding methods to a value in an array, to be called back later
63
+ @callbackMethods[toOpt] = mname
64
+ end
65
+
66
+ def run(target, *args)
67
+ # run the method assigned to the integer value in the array
68
+ @callbackMethods[target].call(*args) # taking any arguments, as they are sent to the attached method
69
+ end
70
+ end # end of private class
71
+ private_constant :Linkage # set as private constant
72
+ end # end of class
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artsy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-13 00:00:00.000000000 Z
11
+ date: 2021-05-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Enables you to make good looking terminal programs with colors and text
14
14
  formatting.
@@ -18,6 +18,8 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - lib/artsy.rb
21
+ - lib/artsy/devel/handler.rb
22
+ - lib/artsy/menu.rb
21
23
  homepage: https://github.com/notronaldmcdonald/artsy
22
24
  licenses:
23
25
  - MIT