about summary refs log blame commit diff stats
path: root/src/tmp.rkt
blob: f63055d8268fa804bf2f8608b6065f3335065cb6 (plain) (tree)
1
2
3
4
5

            

                 
                                    













                                                                                                     
                                                                                                           

                                   
                                                                                                            






                                                                                                    


                                                                                                       


                                                                                            


                                                                                       
 




                                                                                                                      

                     
                                                                                                   

                                                                               
 



                                                                                     









                                                                                                   
 
 
#lang racket

; (require sugar)

(define test-data '#hash(("id" . 12)
       ("name" . "butterfree")
       ("sprite" . "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/12.png")
       ("stats"
        . (#hasheq((base_stat . 60)
                   (effort . 0)
                   (stat . #hasheq((name . "hp") (url . "https://pokeapi.co/api/v2/stat/1/"))))
           #hasheq((base_stat . 45)
                   (effort . 0)
                   (stat . #hasheq((name . "attack") (url . "https://pokeapi.co/api/v2/stat/2/"))))
           #hasheq((base_stat . 50)
                   (effort . 0)
                   (stat . #hasheq((name . "defense") (url . "https://pokeapi.co/api/v2/stat/3/"))))
           #hasheq((base_stat . 90)
                   (effort . 2)
                   (stat . #hasheq((name . "special-attack") (url . "https://pokeapi.co/api/v2/stat/4/"))))
           #hasheq((base_stat . 80)
                   (effort . 1)
                   (stat . #hasheq((name . "special-defense") (url . "https://pokeapi.co/api/v2/stat/5/"))))
           #hasheq((base_stat . 70)
                   (effort . 0)
                   (stat . #hasheq((name . "speed") (url . "https://pokeapi.co/api/v2/stat/6/"))))))
       ("types"
        . (#hasheq((slot . 1)
                   (type . #hasheq((name . "bug") (url . "https://pokeapi.co/api/v2/type/7/"))))
           #hasheq((slot . 2)
                   (type . #hasheq((name . "flying") (url . "https://pokeapi.co/api/v2/type/3/"))))))))


; (define d (dict->list test-data)) ; or...you know...could convert from hash table to list?


; (hash? (car (hash-ref test-data "stats"))) ; #t --- BOOM! this gets us a hash table! 
; (display (car (hash-ref test-data "stats")))
; (list? (hash-ref test-data "stats")) ;; #t

;; "stats" and "types" AREN'T exactly nested hash tables! They're lists, with hash tables embedded in them! 
;; SO! I need a way to test for if something is a LIST, and then if it is a LIST I think then I hash map through that!


(define (inspector h)
    (hash-map h
        (lambda (k v)
                (if (list? v) (display (~a "HARK! THE VALUE FOR THE KEY ~"k"~ IS A LIST \n====\n"))
                        (display (~a "  key: " k "\nvalue: " v "\n=====\n")))))
    h)

;;(inspector test-data)

;; NEXT STEPS -> https://stackoverflow.com/questions/13504302/racket-scheme-filtering

(hash-ref test-data "stats") ; all stats
(hash-ref (car (hash-ref test-data "stats")) 'base_stat) ; value for a given stat
(hash-ref (hash-ref (car (hash-ref test-data "stats")) 'stat) 'name) ; name for a given stat


(map
 (lambda (x) (displayln "t")) ;; need a way to not use car, but just hit every item in the sequence
 (hash-ref test-data "stats"))