Skip to content

Instantly share code, notes, and snippets.

View AndyObtiva's full-sized avatar

Andy Maleh AndyObtiva

View GitHub Profile

Glimmer Hangman Icon Glimmer Hangman 1.0.0

Gem Version

Hangman (word game) that runs on Mac, Windows, and Linux. Built with Ruby and Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development Cross-Platform Native GUI Library) using Application Scaffolding.

Implementation started at the RubyConf 2024 Hack Day Event for Glimmer DSL for LibUI, which was connected to the [RubyConf 2024 workshop "How To Build Basic Desktop Applicatio

# Source: https://github.com/AndyObtiva/glimmer_hangman/blob/master/app/glimmer_hangman/view/hangman_guessed_letters.rb
require 'glimmer_hangman/model/game'
class GlimmerHangman
module View
class HangmanGuessedLetters
include Glimmer::LibUI::CustomShape
option :game
option :size, default: 480
# Source: https://github.com/AndyObtiva/glimmer_hangman/blob/master/app/glimmer_hangman/view/hangman_guess.rb
require 'glimmer_hangman/model/game'
class GlimmerHangman
module View
class HangmanGuess
include Glimmer::LibUI::CustomShape
option :game
option :size, default: 480
# Source: https://github.com/AndyObtiva/glimmer_hangman/blob/master/app/glimmer_hangman/view/hangman.rb
require 'glimmer_hangman/model/game'
class GlimmerHangman
module View
class HangmanScene
include Glimmer::LibUI::CustomShape
option :game
option :size, default: 480
# Source: https://github.com/AndyObtiva/glimmer_hangman/blob/master/app/glimmer_hangman/view/hangman.rb
require 'glimmer_hangman/model/game'
require 'glimmer_hangman/view/hangman_scene'
require 'glimmer_hangman/view/hangman_guess'
require 'glimmer_hangman/view/hangman_guessed_letters'
class GlimmerHangman
module View
class Hangman
# Source: https://github.com/AndyObtiva/glimmer_hangman/blob/master/app/glimmer_hangman/model/game.rb
class GlimmerHangman
module Model
class Game
WORDS_FILE_PATH = File.join(APP_ROOT, './config/words.txt')
attr_accessor :word, :guess, :guessed_letters, :incorrect_guess_count
def initialize
load_words
@AndyObtiva
AndyObtiva / glimmer-dsl-web-sample-hello-hello-component-listeners-default-slot.rb
Last active October 20, 2024 01:54
Glimmer DSL for Web (Ruby in the Browser Web Frontend Framework) Hello, Component Listeners! (Default Slot) Sample
require 'glimmer-dsl-web'
Address = Struct.new(:full_name, :street, :street2, :city, :state, :zip_code, keyword_init: true) do
STATES = {
"AK"=>"Alaska",
"AL"=>"Alabama",
"AR"=>"Arkansas",
"AS"=>"American Samoa",
"AZ"=>"Arizona",
"CA"=>"California",
@AndyObtiva
AndyObtiva / glimmer-dsl-web-sample-hello-hello-component-listeners.rb
Last active October 20, 2024 01:14
Glimmer DSL for Web (Ruby in the Browser Web Frontend Framework) Hello, Component Listeners! Sample
require 'glimmer-dsl-web'
Address = Struct.new(:full_name, :street, :street2, :city, :state, :zip_code, :billing_and_shipping, keyword_init: true) do
STATES = {
"AK"=>"Alaska", "AL"=>"Alabama", "AR"=>"Arkansas", "AS"=>"American Samoa", "AZ"=>"Arizona",
"CA"=>"California", "CO"=>"Colorado", "CT"=>"Connecticut", "DC"=>"District of Columbia", "DE"=>"Delaware",
"FL"=>"Florida", "GA"=>"Georgia", "GU"=>"Guam", "HI"=>"Hawaii", "IA"=>"Iowa", "ID"=>"Idaho", "IL"=>"Illinois",
"IN"=>"Indiana", "KS"=>"Kansas", "KY"=>"Kentucky", "LA"=>"Louisiana", "MA"=>"Massachusetts", "MD"=>"Maryland",
"ME"=>"Maine", "MI"=>"Michigan", "MN"=>"Minnesota", "MO"=>"Missouri", "MS"=>"Mississippi", "MT"=>"Montana",
"NC"=>"North Carolina", "ND"=>"North Dakota", "NE"=>"Nebraska", "NH"=>"New Hampshire", "NJ"=>"New Jersey",
@AndyObtiva
AndyObtiva / glimmer-dsl-web-sample-hello-hello-component-slots.rb
Last active October 20, 2024 01:13
Glimmer DSL for Web (Ruby in the Browser Web Frontend Framework) Hello, Component Slots! Sample
require 'glimmer-dsl-web'
Address = Struct.new(:full_name, :street, :street2, :city, :state, :zip_code, :billing_and_shipping, keyword_init: true) do
STATES = {
"AK"=>"Alaska", "AL"=>"Alabama", "AR"=>"Arkansas", "AS"=>"American Samoa", "AZ"=>"Arizona",
"CA"=>"California", "CO"=>"Colorado", "CT"=>"Connecticut", "DC"=>"District of Columbia", "DE"=>"Delaware",
"FL"=>"Florida", "GA"=>"Georgia", "GU"=>"Guam", "HI"=>"Hawaii", "IA"=>"Iowa", "ID"=>"Idaho", "IL"=>"Illinois",
"IN"=>"Indiana", "KS"=>"Kansas", "KY"=>"Kentucky", "LA"=>"Louisiana", "MA"=>"Massachusetts", "MD"=>"Maryland",
"ME"=>"Maine", "MI"=>"Michigan", "MN"=>"Minnesota", "MO"=>"Missouri", "MS"=>"Mississippi", "MT"=>"Montana",
"NC"=>"North Carolina", "ND"=>"North Dakota", "NE"=>"Nebraska", "NH"=>"New Hampshire", "NJ"=>"New Jersey",
# Source: https://github.com/AndyObtiva/glimmer-dsl-web/blob/master/lib/glimmer-dsl-web/samples/regular/todo_mvc/models/todo.rb
Todo = Struct.new(:task, :completed, :editing, :deleted, keyword_init: true) do
alias completed? completed
alias editing? editing
alias deleted? deleted
def active = !completed
alias active? active
def start_editing