ruby’s magical case statement
DESCRIPTION
Ruby's case statement has a lot of cool tricks. See how to use it to match classes, ranges, regular expressions, and your own custom matcher classes.TRANSCRIPT
![Page 1: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/1.jpg)
Ruby’scase Statement
by Tim Moore
![Page 2: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/2.jpg)
Ruby’s Magicalcase Statement
by Tim Moore
Magical
![Page 3: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/3.jpg)
There is Totally
Such a Thing as Magic
![Page 4: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/4.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 5: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/5.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 6: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/6.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 7: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/7.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 8: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/8.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 9: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/9.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 10: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/10.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 11: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/11.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 12: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/12.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 13: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/13.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 14: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/14.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 15: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/15.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 16: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/16.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 17: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/17.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 18: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/18.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 19: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/19.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 20: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/20.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 21: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/21.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301 handle_redirect(http_response) when 302 handle_redirect(http_response) when 303 handle_redirect(http_response) when 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 22: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/22.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301, 302, 303, 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 23: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/23.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301, 302, 303, 307 handle_redirect(http_response) when 404 handle_not_found(http_response) else handle_unknown_error(http_response) end end
![Page 24: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/24.jpg)
def handle_response(http_response) case http_response.status when 200 handle_success(http_response) when 301, 302, 303, 307 handle_redirect(http_response) when 404 handle_not_found(http_response) when 400...500 handle_client_error(http_response) when 500...600 handle_server_error(http_response) else handle_unknown_error(http_response) end end
![Page 25: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/25.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 26: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/26.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 27: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/27.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 28: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/28.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 29: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/29.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 30: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/30.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 31: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/31.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 32: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/32.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 33: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/33.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 34: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/34.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 35: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/35.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 36: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/36.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 37: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/37.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
irb> nickname 'Christopher' => "Chris" irb> nickname 'Abigail' => "Abby" irb> nickname 'Christina' => "Chris" irb> nickname 'Fabio' => "Fabio"
![Page 38: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/38.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 39: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/39.jpg)
def nickname(first_name) case first_name when 'Abraham' nickname = 'Abe' when 'Abigail' nickname = 'Abby' when 'Christopher', 'Christian', 'Christina' nickname = 'Chris' # etc., etc. else nickname = first_name end nickname end
![Page 40: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/40.jpg)
def nickname(first_name) nickname = case first_name when 'Abraham' 'Abe' when 'Abigail' 'Abby' when 'Christopher', 'Christian', 'Christina' 'Chris' # etc., etc. else first_name end nickname end
![Page 41: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/41.jpg)
def nickname(first_name) nickname = case first_name when 'Abraham' 'Abe' when 'Abigail' 'Abby' when 'Christopher', 'Christian', 'Christina' 'Chris' # etc., etc. else first_name end nickname end
![Page 42: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/42.jpg)
def nickname(first_name) case first_name when 'Abraham' 'Abe' when 'Abigail' 'Abby' when 'Christopher', 'Christian', 'Christina' 'Chris' # etc., etc. else first_name end !end
![Page 43: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/43.jpg)
class Color < Struct.new(:r,:g,:b) ! RED = Color.new( 0xFF, 0x00, 0x00 ) GREEN = Color.new( 0x00, 0xFF, 0x00 ) BLUE = Color.new( 0x00, 0x00, 0xFF ) CYAN = Color.new( 0x00, 0xFF, 0xFF ) MAGENTA = Color.new( 0xFF, 0x00, 0xFF ) YELLOW = Color.new( 0xFF, 0xFF, 0x00 ) !end
def primary?(color, mode) case color when Color::RED, Color::GREEN, Color::BLUE mode == :additive when Color::CYAN, Color::MAGENTA, Color::YELLOW mode == :subtractive else false end end
![Page 44: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/44.jpg)
class Color < Struct.new(:r,:g,:b) ! RED = Color.new( 0xFF, 0x00, 0x00 ) GREEN = Color.new( 0x00, 0xFF, 0x00 ) BLUE = Color.new( 0x00, 0x00, 0xFF ) CYAN = Color.new( 0x00, 0xFF, 0xFF ) MAGENTA = Color.new( 0xFF, 0x00, 0xFF ) YELLOW = Color.new( 0xFF, 0xFF, 0x00 ) !end
def primary?(color, mode) case color when Color::RED, Color::GREEN, Color::BLUE mode == :additive when Color::CYAN, Color::MAGENTA, Color::YELLOW mode == :subtractive else false end end
irb> primary? Color::RED, :additive => true irb> primary? Color::RED, :subtractive => false irb> primary? Color::CYAN, :subtractive => true irb> primary? Color.new(0,0,255), :additive => true irb> primary? Color.new(0,127,255), :additive => false
![Page 45: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/45.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 46: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/46.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 47: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/47.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 48: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/48.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 49: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/49.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 50: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/50.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 51: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/51.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 52: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/52.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 53: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/53.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 54: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/54.jpg)
def local_search(query) case query when String specs_by_name(query) when Gem::Dependency search_by_dependency(query) when Gem::Specification, RemoteSpecification, LazySpecification, EndpointSpecification search_by_spec(query) else raise "You can't search for #{query}." end end
![Page 55: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/55.jpg)
def want_a_beer?(beer_type) case beer_type when /^Sierra Nevada|IPA/ :yes when /V(ictoria)? ?B(itter)?/, /Bud(weiser)?/ :no else :probably end end
![Page 56: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/56.jpg)
def want_a_beer?(beer_type) case beer_type when /^Sierra Nevada|IPA/ :yes when /V(ictoria)? ?B(itter)?/, /Bud(weiser)?/ :no else :probably end end
![Page 57: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/57.jpg)
def want_a_beer?(beer_type) case beer_type when /^Sierra Nevada|IPA/ :yes when /V(ictoria)? ?B(itter)?/, /Bud(weiser)?/ :no else :probably end end
![Page 58: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/58.jpg)
def want_a_beer?(beer_type) case beer_type when /^Sierra Nevada|IPA/ :yes when /V(ictoria)? ?B(itter)?/, /Bud(weiser)?/ :no else :probably end end
![Page 59: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/59.jpg)
def want_a_beer?(beer_type) case beer_type when /^Sierra Nevada|IPA/ :yes when /V(ictoria)? ?B(itter)?/, /Bud(weiser)?/ :no else :probably end end
irb> want_a_beer? 'Sierra Nevada Pale Ale' => :yes irb> want_a_beer? 'Sierra Nevada Torpedo IPA' => :yes irb> want_a_beer? 'Mountain Goat IPA' => :yes irb> want_a_beer? 'Victoria Bitter' => :no irb> want_a_beer? 'VB' => :no irb> want_a_beer? 'V Bitter' => :no irb> want_a_beer? 'Budweiser' => :no irb> want_a_beer? 'Bud' => :no irb> want_a_beer? 'Bud Light' => :no irb> want_a_beer? 'Coopers Pale Ale' => :probably irb> want_a_beer? 'Stella Artois' => :probably
![Page 60: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/60.jpg)
class Color def more_blue? b > r && b > g end ! def more_red? r > b && r > g end ! def more_green? g > r && g > b end end
def describe_color(color) case color when proc {|color| color.more_blue? } "blueish" when proc {|color| color.more_red? } "reddish" when proc {|color| color.more_green? } "greenish" else "pretty" end end
![Page 61: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/61.jpg)
class Color def more_blue? b > r && b > g end ! def more_red? r > b && r > g end ! def more_green? g > r && g > b end end
def describe_color(color) case color when proc {|color| color.more_blue? } "blueish" when proc {|color| color.more_red? } "reddish" when proc {|color| color.more_green? } "greenish" else "pretty" end end
irb> describe_color Color::RED => "reddish" irb> describe_color Color::GREEN => "greenish" irb> describe_color Color.new(0xCC,0x11,0xFF) => "blueish" irb> describe_color Color::CYAN => "pretty"
![Page 62: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/62.jpg)
class Color def more_blue? b > r && b > g end ! def more_red? r > b && r > g end ! def more_green? g > r && g > b end end
def describe_color(color) case color when proc {|color| color.more_blue? } "blueish" when proc {|color| color.more_red? } "reddish" when proc {|color| color.more_green? } "greenish" else "pretty" end end
![Page 63: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/63.jpg)
class Color def more_blue? b > r && b > g end ! def more_red? r > b && r > g end ! def more_green? g > r && g > b end end
def describe_color(color) case color when :more_blue?.to_proc "blueish" when :more_red?.to_proc "reddish" when :more_green?.to_proc "greenish" else "pretty" end end
![Page 64: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/64.jpg)
![Page 65: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/65.jpg)
===“case equality operator”
![Page 66: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/66.jpg)
===“threequals”
![Page 67: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/67.jpg)
case object when case1 do_something when case2 do_another_thing else do_something_else end
![Page 68: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/68.jpg)
object case1 do_something case2 do_another_thing else do_something_else end
![Page 69: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/69.jpg)
!
if case1 === object do_something elsif case2 === object do_another_thing else do_something_else end
![Page 70: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/70.jpg)
class Range def ===(value) self.include?(value) end end
![Page 71: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/71.jpg)
class Module def ===(object) object.is_a?(self) end end
![Page 72: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/72.jpg)
class Regexp def ===(string) if self =~ string true else false end end end
![Page 73: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/73.jpg)
class Proc def ===(object) self.call(object) end end
![Page 74: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/74.jpg)
class Object def ===(other) self == other end end
![Page 75: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/75.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 76: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/76.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 77: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/77.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 78: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/78.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 79: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/79.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 80: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/80.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 81: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/81.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 82: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/82.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 83: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/83.jpg)
class VersionMatcher < Struct.new(:operator, :req_version) def ===(version) case operator when "=" version == req_version when ">" version > req_version when "<" version < req_version when ">=" version >= req_version when "<=" version <= req_version else false end end end
![Page 84: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/84.jpg)
class VersionMatcher < Struct.new(:operator, :req_version) def ===(version) case operator when "=" version == req_version when ">" version > req_version when "<" version < req_version when ">=" version >= req_version when "<=" version <= req_version else false end end end
![Page 85: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/85.jpg)
class VersionMatcher < Struct.new(:operator, :req_version) def ===(version) case operator when "=" version == req_version when ">" version > req_version when "<" version < req_version when ">=" version >= req_version when "<=" version <= req_version else false end end end
![Page 86: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/86.jpg)
class VersionMatcher < Struct.new(:operator, :req_version) def ===(version) case operator when "=" version == req_version when ">" version > req_version when "<" version < req_version when ">=" version >= req_version when "<=" version <= req_version else false end end end
![Page 87: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/87.jpg)
class VersionMatcher < Struct.new(:operator, :req_version) def ===(version) case operator when "=" version == req_version when ">" version > req_version when "<" version < req_version when ">=" version >= req_version when "<=" version <= req_version else false end end end
![Page 88: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/88.jpg)
class VersionMatcher::All < Struct.new(:version_matchers) ! def ===(version) version_matchers .all? {|matcher| matcher === version } end !end
![Page 89: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/89.jpg)
class VersionMatcher::All < Struct.new(:version_matchers) ! def ===(version) version_matchers .all? {|matcher| matcher === version } end !end
![Page 90: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/90.jpg)
class VersionMatcher::All < Struct.new(:version_matchers) ! def ===(version) version_matchers .all? {|matcher| matcher === version } end !end
![Page 91: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/91.jpg)
class VersionMatcher::All < Struct.new(:version_matchers) ! def ===(version) version_matchers .all? {|matcher| matcher === version } end !end
![Page 92: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/92.jpg)
class VersionMatcher::All < Struct.new(:version_matchers) ! def ===(version) version_matchers .all? {|matcher| matcher === version } end !end
![Page 93: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/93.jpg)
def version(requirements) case requirements when String op, req_version = requirements.split VersionMatcher.new(op, req_version) when Array matchers = requirements.map {|r| version(r)} VersionMatcher::All.new(matchers) end end
![Page 94: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/94.jpg)
def version(requirements) case requirements when String op, req_version = requirements.split VersionMatcher.new(op, req_version) when Array matchers = requirements.map {|r| version(r)} VersionMatcher::All.new(matchers) end end
![Page 95: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/95.jpg)
def version(requirements) case requirements when String op, req_version = requirements.split VersionMatcher.new(op, req_version) when Array matchers = requirements.map {|r| version(r)} VersionMatcher::All.new(matchers) end end
![Page 96: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/96.jpg)
def version(requirements) case requirements when String op, req_version = requirements.split VersionMatcher.new(op, req_version) when Array matchers = requirements.map {|r| version(r)} VersionMatcher::All.new(matchers) end end
![Page 97: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/97.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 98: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/98.jpg)
def somegem_adapter case OtherGem::VERSION when version("< 1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 99: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/99.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 100: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/100.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when version([">= 1.0", "< 2.0"]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 101: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/101.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when VersionMatcher::All.new([ version(">= 1.0"), version("< 2.0") ]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 102: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/102.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when VersionMatcher::All.new([ version(">= 1.0"), version("< 2.0") ]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 103: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/103.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 104: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/104.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) OtherGemAdapter::Version1x.new when version(">= 2.0") OtherGemAdapter::Current.new end end
![Page 105: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/105.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) OtherGemAdapter::Version1x.new when VersionMatcher.new(">=", "2.0") OtherGemAdapter::Current.new end end
![Page 106: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/106.jpg)
def somegem_adapter case OtherGem::VERSION when VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new when VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) OtherGemAdapter::Version1x.new when VersionMatcher.new(">=", "2.0") OtherGemAdapter::Current.new end end
![Page 107: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/107.jpg)
def somegem_adapter OtherGem::VERSION VersionMatcher.new("<", "1.0") OtherGemAdapter::Prerelease.new VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) OtherGemAdapter::Version1x.new VersionMatcher.new(">=", "2.0") OtherGemAdapter::Current.new end end
![Page 108: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/108.jpg)
def somegem_adapter ! if VersionMatcher.new("<", "1.0") \ === OtherGem::VERSION OtherGemAdapter::Prerelease.new elsif VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) \ === OtherGem::VERSION OtherGemAdapter::Version1x.new elsif VersionMatcher.new(">=", "2.0") \ === OtherGem::VERSION OtherGemAdapter::Current.new end !end
![Page 109: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/109.jpg)
def somegem_adapter ! if VersionMatcher.new("<", "1.0") \ === OtherGem::VERSION OtherGemAdapter::Prerelease.new elsif VersionMatcher::All.new([ VersionMatcher.new(">=", "1.0"), VersionMatcher.new("<" , "2.0") ]) \ === OtherGem::VERSION OtherGemAdapter::Version1x.new elsif VersionMatcher.new(">=", "2.0") \ === OtherGem::VERSION OtherGemAdapter::Current.new end !end
irb> OtherGem::VERSION = '0.9' irb> somegem_adapter => #<OtherGemAdapter::Prerelease> irb> OtherGem::VERSION = '1.0' irb> somegem_adapter => #<OtherGemAdapter::Version1x> irb> OtherGem::VERSION = '1.2' irb> somegem_adapter => #<OtherGemAdapter::Version1x> irb> OtherGem::VERSION = '2.0' irb> somegem_adapter => #<OtherGemAdapter::Current> irb> OtherGem::VERSION = '4.0' irb> somegem_adapter => #<OtherGemAdapter::Current>
![Page 110: Ruby’s Magical case Statement](https://reader033.vdocuments.site/reader033/viewer/2022051109/547ba3b8b4af9fd3158b4f41/html5/thumbnails/110.jpg)
Thank you!