cliptic 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +13 -13
- data/lib/cliptic/interface.rb +4 -1
- data/lib/cliptic/main.rb +27 -14
- data/lib/cliptic/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5c15d9b0f8ee2715ed5b6bbfb6a0abde640380518e4ae10394189d1d7c5b938c
|
4
|
+
data.tar.gz: 8bb8ad98ae095391b859af404aa91640f00b72beabec64cfe1cf717280ed828f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64d058d05dae4b2fde66d0d47cddef98104396ee26dda9a4484a1e2b5541a203211741d0ddc715f8d42c78db6ca4d41623da3f4ab6361ece44558661ec9eab22
|
7
|
+
data.tar.gz: d3594c6af426c9306becf1c53fedf901bad49b95a0369763f97b377ac7bd1603f4796bf1a4d94e5783e6e6d5c1ee8b5f06f9f9d5728539f4a963fc0af2dd2276
|
data/README.md
CHANGED
@@ -7,16 +7,15 @@
|
|
7
7
|
- Puzzles are sourced from the free crosswords uploaded daily to [Lovatt's][1].
|
8
8
|
- cliptic is written in Ruby using the ncurses library
|
9
9
|
|
10
|
-
## New to 0.1.
|
10
|
+
## New to 0.1.3
|
11
11
|
|
12
12
|
### Bug Fixes
|
13
|
-
-
|
14
|
-
|
15
|
-
- Fix earliest date bug (thank you `samtell21` for pointing this out)
|
16
|
-
- Center the resize prompt
|
13
|
+
- Fix the ssl certificate bug that prevents fetching puzzles
|
14
|
+
- Fix the "out of range" bug when moving to an undefined index using `g`
|
17
15
|
|
18
16
|
### Features
|
19
|
-
- Add
|
17
|
+
- Add manual redraw feature to the main puzzle view. Called with `^L` (useful for terminal resize)
|
18
|
+
- Add exit controls to the resize interface (`q` or `^C`)
|
20
19
|
|
21
20
|
## Features
|
22
21
|
- VIM-like keybindings
|
@@ -108,14 +107,15 @@ rake build install
|
|
108
107
|
|
109
108
|
### Global Commands
|
110
109
|
|
111
|
-
| Command | Action
|
112
|
-
|
113
|
-
| `^S` | Save current progress (note that progress is saved when exiting puzzles by default)
|
110
|
+
| Command | Action |
|
111
|
+
|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
112
|
+
| `^S` | Save current progress (note that progress is saved when exiting puzzles by default) |
|
114
113
|
| `^R` | Reveals solution for focussed clue (note that this forfeits adding this puzzle to high scores) |
|
115
|
-
| `^C` | Exit puzzle
|
116
|
-
| `^E` | Resets timer and progress for puzzle
|
117
|
-
| `^G` | Mark current progress (only relevant if auto_mark is set to 0)
|
118
|
-
| `^P` | Pause game
|
114
|
+
| `^C` | Exit puzzle |
|
115
|
+
| `^E` | Resets timer and progress for puzzle |
|
116
|
+
| `^G` | Mark current progress (only relevant if auto_mark is set to 0) |
|
117
|
+
| `^P` | Pause game |
|
118
|
+
| `^L` | Redraws the screen (useful on resizing terminal window) |
|
119
119
|
|
120
120
|
### Navigation (Normal Mode)
|
121
121
|
- There are several ways to navigate the cells of the cliptic grid in **NORMAL MODE**.
|
data/lib/cliptic/interface.rb
CHANGED
@@ -91,7 +91,8 @@ module Cliptic
|
|
91
91
|
end
|
92
92
|
def show
|
93
93
|
while Screen.too_small?
|
94
|
-
draw
|
94
|
+
draw
|
95
|
+
exit if (c = getch) == ?q || c == 3
|
95
96
|
end
|
96
97
|
end
|
97
98
|
def prompt
|
@@ -179,6 +180,7 @@ module Cliptic
|
|
179
180
|
def enter(pre_proc:->{hide}, post_proc:->{show})
|
180
181
|
pre_proc.call if pre_proc
|
181
182
|
opts.values[selector.cursor]&.call
|
183
|
+
reset_pos
|
182
184
|
post_proc.call if post_proc
|
183
185
|
end
|
184
186
|
def back(post_proc:->{hide})
|
@@ -230,6 +232,7 @@ module Cliptic
|
|
230
232
|
def enter
|
231
233
|
hide
|
232
234
|
Main::Player::Game.new(date:stat_date).play
|
235
|
+
reset_pos
|
233
236
|
show
|
234
237
|
end
|
235
238
|
def reset_pos
|
data/lib/cliptic/main.rb
CHANGED
@@ -144,7 +144,9 @@ module Cliptic
|
|
144
144
|
.dig(:cells, 0, :meta, :data).length > 0
|
145
145
|
end
|
146
146
|
def raw
|
147
|
-
@raw || Curl.get(URL, data)
|
147
|
+
@raw || Curl.get(URL, data) do |curl|
|
148
|
+
curl.ssl_verify_peer = false
|
149
|
+
end.body
|
148
150
|
end
|
149
151
|
end
|
150
152
|
class Cache < Request
|
@@ -422,17 +424,18 @@ module Cliptic
|
|
422
424
|
end
|
423
425
|
class Board
|
424
426
|
include Puzzle, Windows
|
425
|
-
attr_reader :puzzle, :grid, :box, :cursor, :clue, :dir
|
426
|
-
def initialize(date:Date.today)
|
427
|
+
attr_reader :puzzle, :grid, :box, :cursor, :clue, :dir, :state
|
428
|
+
def initialize(date:Date.today)#, state:)
|
427
429
|
@puzzle = Puzzle::Puzzle.new(date:date)
|
428
430
|
@grid = Grid.new(puzzle:puzzle)
|
429
431
|
@box = Cluebox.new(grid:grid)
|
430
432
|
@cursor = Cursor.new(grid:grid)
|
433
|
+
#@state = state
|
431
434
|
end
|
432
435
|
def setup(state:nil)
|
433
436
|
grid.draw
|
434
437
|
load_state(state:state)
|
435
|
-
set_clue(clue:puzzle.first_clue, mv:true)
|
438
|
+
set_clue(clue:puzzle.first_clue, mv:true) if !@clue
|
436
439
|
update
|
437
440
|
self
|
438
441
|
end
|
@@ -556,7 +559,7 @@ module Cliptic
|
|
556
559
|
puzzle.get_clue(y:y, x:x, dir:dir)
|
557
560
|
end
|
558
561
|
def get_clue_by_index(i:)
|
559
|
-
puzzle.get_clue_by_index(i:i, dir:dir)
|
562
|
+
puzzle.get_clue_by_index(i:i, dir:dir) || clue
|
560
563
|
end
|
561
564
|
def addch(char:)
|
562
565
|
current_cell.write(char.upcase)
|
@@ -605,16 +608,13 @@ module Cliptic
|
|
605
608
|
attr_accessor :mode, :continue, :unsaved
|
606
609
|
def initialize(date:Date.today)
|
607
610
|
@date = date
|
608
|
-
|
609
|
-
@board = Board.new(date:date)
|
610
|
-
@top_b = Top_Bar.new(date:date)
|
611
|
-
@bot_b = Bottom_Bar.new
|
611
|
+
init_windows
|
612
612
|
@timer = Timer.new(time:state.time, bar:top_b,
|
613
613
|
callback:->{board.update})
|
614
614
|
@ctrls = Controller.new(game:self)
|
615
615
|
@unsaved = false
|
616
616
|
@continue = true
|
617
|
-
|
617
|
+
draw
|
618
618
|
end
|
619
619
|
def play
|
620
620
|
if state.done
|
@@ -624,10 +624,11 @@ module Cliptic
|
|
624
624
|
game_and_timer_threads.map(&:join)
|
625
625
|
end
|
626
626
|
end
|
627
|
-
def
|
628
|
-
|
629
|
-
|
630
|
-
|
627
|
+
def redraw
|
628
|
+
save
|
629
|
+
Screen.clear
|
630
|
+
init_windows
|
631
|
+
draw
|
631
632
|
end
|
632
633
|
def unsaved=(bool)
|
633
634
|
@unsaved = bool
|
@@ -676,6 +677,17 @@ module Cliptic
|
|
676
677
|
Screen.clear
|
677
678
|
end
|
678
679
|
private
|
680
|
+
def init_windows
|
681
|
+
@state = State.new(date:date)
|
682
|
+
@board = Board.new(date:date)
|
683
|
+
@top_b = Top_Bar.new(date:date)
|
684
|
+
@bot_b = Bottom_Bar.new
|
685
|
+
end
|
686
|
+
def draw
|
687
|
+
[top_b, bot_b].each(&:draw)
|
688
|
+
self.mode = :N
|
689
|
+
board.setup(state:state)
|
690
|
+
end
|
679
691
|
def completed
|
680
692
|
save
|
681
693
|
log_score
|
@@ -789,6 +801,7 @@ module Cliptic
|
|
789
801
|
5 => ->{game.reset_menu.choose_opt},
|
790
802
|
7 => ->{game.board.puzzle.check_all},
|
791
803
|
9 => ->{game.board.swap_direction},
|
804
|
+
12 => ->{game.redraw},
|
792
805
|
16 => ->{game.pause},
|
793
806
|
18 => ->{game.reveal},
|
794
807
|
19 => ->{game.save}
|
data/lib/cliptic/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cliptic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Welham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: curses
|