Monday, January 28, 2013

Coffee Script Literals - Do not like mixed spaces and tabs

I spent a lot of time this morning trying to work out why my CoffeeScript literal was not working. I was trying to describe a hash containing an array containing hashes. I assumed my parse errors was simply me getting the format incorrect - Literal syntax examples for CoffeeScript available on the internet are pretty basic and don't describe nesting well.

Here was the parser error:

Error: In /Volumes/Data/users/ben/(snipped)/dashboard.coffee, Parse error on line 20: Unexpected '{'
    at Object.parseError (/Volumes/Data/users/ben/(snipped)/node_modules/coffee-script/lib/coffee-script/parser.js:477:11)



So I broke out a separate  .coffee file and tried to duplicate the problem, and failed. I made sure the command line version was the same one Node.js was calling. I duplicated the Node.js parser error in the command line. I put my (working) test code side-by-side with the broken code, and the parser still walked on by the test code to fail on the original code.

As the title implies, it turned out this was a simple mixed tabs and spaces problem. (I hadn't worked in .coffee files in my IDE prior and I remember needing to change the tab defaults).

So the moral of the story is to check whitespace first when you see CoffeeScript parser errors.

And for anyone wondering how to describe a hash-containing-array-containing-hashes literal in CoffeeScript, you write:


hashContainsArrayContainsHashes =
  key1: "value1"
  key2: [
      key211: "value211"
      key212: "value212"
    ,
      key221: "value221"
      key222: "value222"
    ]
  key3: "value3"


hope that helps someone!

4 comments:

  1. Thanks for the hint. I was using an array of hashes (objects) of arrays.

    The tabs were killing me.

    ReplyDelete
  2. đồng tâm
    game mu
    cho thuê nhà trọ
    cho thuê phòng trọ
    nhac san cuc manh
    số điện thoại tư vấn pháp luật miễn phí
    văn phòng luật
    tổng đài tư vấn pháp luật
    dịch vụ thành lập công ty trọn gói
    lý thuyết trò chơi
    đức phật và nàng
    hồ sơ mật dinh độc lập
    đừng hoang tưởng về biển lớn
    chiến thắng trò chơi cuộc sống
    lượng tử
    ngồi khóc trên cây
    truy tìm ký ức
    mặt dày tâm đen
    thế giới như tôi thấy

    “Phong nhi kì thật chuyện lần này còn may vì có ngươi”. Vương Đức Vọng lạnh nhạt nói: “Theo ta phỏng đoán, bệ hạ quyết định như vậy có nghĩa là còn nể mặt ngươi.”
    “Nể mặt ta?” Lưu Phong hơi kinh hãi.
    “Ngươi không cần ngạc nhiên, sự thật chắc chắn là như thế.” Vương Đức Vọng phân tích: “Yến Vương muốn trị ta thì tuyệt đối sẽ không để cho ta làm Tri phủ. Huống hồ, theo quy định của Hoa Hạ đế quốc, quan viên bị biếm (giáng chức) thì thân nhân phải đi cùng. Nhưng trong thánh chỉ của bệ hạ lại không có nhắc đến Đông Đông và Bảo nhi. Ta nghĩ điều này không phải ngẫu nhiên. Theo ta được biết, nhiều năm qua, Vương gia ta (họ Vương chứ ko phải hoàng thân quốc thích đâu ^^) là trường hợp duy nhất bị giáng chức mà gia quyến không bị liên lụy”.
    “Ồ, là như thế sao.” Lưu Phong âm thầm kinh hãi, mẹ kiếp, pháp luật thời buổi này mặc dù chưa hoàn thiện nhưng cũng rất nghiêm chỉnh.
    “Phong nhi, hãy đáp ứng ta một việc, hãy chiếu cố tốt giùm ta Bảo nhi và Đông Đông”. Vương Đức Vọng đột nhiên nghiêm chỉnh nói.
    Lưu Phong trịnh trọng gật đầu nói: “Đại nhân, người yên tâm, cho dù người không nói, ta cũng biết làm như thế nào.”
    “Trời sắp mưa rồi.” Vương Đức Vọng ngẩng đầu nhìn bầu trời, không khỏi có chút suy nghĩ.
    Lưu Phong cũng ngẩng đầu lên nhìn, than nhẹ một tiếng: “Đúng vậy, trời sẽ rất nhanh mưa thôi, đây là một quy luật của tự nhiên, sức người không thể nào ngăn nổi. Những chuyện trong cuộc sống, thường thường có đến tám, chín phần mười là không được như ý muốn, vậy chúng ta phải làm thế nào? Có một số việc, đích xác sức người không có khả năng chống cự được.
    Đại nhân, kỳ thật chuyện lần này người cũng không nên quá để ý, chí ít thì người cũng thoát khỏi sự khống chế của Yến Vương, người được tự do.
    Vương Đức Vọng liếc mắt nhìn hắn thật sâu, âm thầm lấy làm kinh ngạc nói: “Phong nhi, không nghĩ ra ngươi nhỏ tuổi như vậy mà có thể thấu triệt chuyện này, thật là khó tin, khó tin…”
    Ngừng một chút, đột nhiên Vương Đức Trọng nói: “Có đôi khi, ta tự hỏi, có thật sự là ngươi mới mười tám, mười chín tuổi không?.”
    " Chẳng lẻ Vương đại nhân cho rằng ta rất già sao?" Lưu phong khẻ cười một tiếng hỏi.

    ReplyDelete
  3. I really like your approach of blogging. I bookmarked it to my bookmark website record and shall be checking back soon. Celebrity net worth is a website which reports estimates of the total assets and financial activities of celebrities. Read it for more information.

    ReplyDelete
  4. This game yasa pets is the paradise for kids. If you are a parent, you should definitely play this game with your kids. Your kids will be so excited to join all those cute pets and do all kinds of interesting things in this international hospital. The whole atmosphere of this game is full of love and warmth. It is such a satisfying thing to help those pets. You can also operate on those pets, for example, if the mommy needs caesarean section, you must offer immediate help, but you need to remember to wash your hands first before you start to operate on any pet.

    See more: https://www.emulatorpc.com/unnie-doll/

    ReplyDelete