القضبان مشاكل تحويل الهمال - كنسورية غير متوقعة، تتوقع kend

StackOverflow https://stackoverflow.com/questions/971367

  •  13-09-2019
  •  | 
  •  

سؤال

أحاول التبديل لاستخدام HAML بسبب وجهات نظري، لكنني أتلقى رسائل كنسورية غير متوقعة. لقد استخدمت HTML2HAML للتبديل فوق ملفات عرض العمل. أخبرني أولا من خلالها أنني لم أكن بحاجة إلى النهاية التي كان لدى html2haml في إخراجها، لذلك أزلت ذلك والآن أحصل على أخطاء تبدو وكأنها تشكو من النموذج غير المنتهي.

ما الخطأ الذي افعله؟

رسالة خطأ:

compile error
app/views/sessions/new.html.haml:20: syntax error, unexpected kENSURE, expecting kEND
app/views/sessions/new.html.haml:22: syntax error, unexpected $end, expecting kEND

Application.html.hams:

!!!
%html
%head
  %title
    = APP_CONFIG[:site_name] + ': ' + @page_title  
  == <meta http-equiv="content-type" content="text/xhtml; charset=utf-8" />
  == <meta http-equiv="imagetoolbar" content="no"  />
  == <meta name="distribution" content="all" />
  == <meta name="robots" content="all"  />
  == <meta name="resource-type" content="document" />
  == <meta name="MSSmartTagsPreventParsing" content="true"   />
  = stylesheet_link_tag 'base'
  = javascript_include_tag :defaults

  %body
    #container
      #header
        - if logged_in?
          = link_to 'Logout', logout_path
        - else
          = link_to 'Login', login_path
          = link_to 'Signup', signup_path
      #content
        = flash_messages
        = yield :layout

وجلسات / new.html.haml

= title "Login", :h2
- form_tag session_path do
%fieldset
  %legend
    Your Details
  %ol
    %li
      = label_tag 'login', 'Username'
      = text_field_tag 'login', @login
    %li
      = label_tag 'password'
      = password_field_tag 'password', nil
    %li
      = label_tag 'remember_me', 'Remember me'
      = check_box_tag 'remember_me', '1', @remember_me
.buttons
  = submit_tag 'Login'
  = link_to 'Forgotten Password', forgot_password_path
هل كانت مفيدة؟

المحلول

هذا شيء يفعله Haml عندما كنت قد حصلت على التباعد الخاص بك خطأ. html2haml يفعل معظم العمل المناسب لك، ولكن لا يزال يتعين عليك مراجعة التغييرات. المشكلة في الدورات / new.html.haml هي أنك تبدأ كتلة واحدة بدون محتوى:

- form_tag session_path do
%fieldset

يجب أن يتم تداخل الحقلة بأكملها (بادئة) في ذلك do منع. لأنه لا يوجد محتوى على الإطلاق، فشل HAML في وضعه في end الإعلان، لذلك عندما يتم تفسير الملف، تحصل على:

unexpected $end, expecting kEND

بمعنى "لقد ضربت نهاية الملف ($ النهاية)، كنت أتوقع الكلمات الرئيسية النهاية (KEND)"

نصائح أخرى

كما هو موضح، يتميز الجزء الأول بالجسم بادئة المسافة بادئة واحدة أكثر من٪ رئيس، ونسبة٪ رأسا على نفس المستوى مثل٪ HTML، ولا من أي منهما جيد. إذا كان يعمل، فقد تحصل على شيء من هذا القبيل

<html>
</html>
<head>
  ...
  <body>
  ...
  </body>
</head>

أعتقد أن معظم المتصفحات سوف تخنق ذلك! ؛-)

بشكل عام أنا لست من محبي HTML2Haml، والتي على الرغم من أن الأمر يحاول بجد لا يبدو أنه قادر على التعامل مع كل شيء. ما لم يكن لديك كومة كبيرة للغاية من الملفات المشاهدة، سأتميل إلى قضاء الوقت في إعادة صياغة الملفات باليد. ليس عليك القيام بها جميعا في وقت واحد، لماذا لا ترجمها فقط كما تذهب؟ سوف تتعلم الكثير عن Haml بهذه الطريقة أيضا. يكفي ذلك - نأمل - ستجد أن شيء المسافة البادئة كله يصبح غريزا، وبعد ذلك يبدأ التقدم في تسريع.

يتصرف Haml بشكل سيء حقا مع مشاكل مثل علامات التبويب بدلا من المسافة البضجة، ومسافة البادئة غير الصحيحة.

الحل الخاص بي (على الأقل على OSX باستخدام TextMate) هو استخدام زميله، لديك حزمة HAML / SASS. وبعد ثم استخدم CMD- [إلى غير المسافة البادئة النص، بعد cmd-] لإعادة المسافة البادئة النص بشكل صحيح. التي تتخلص من أي علامات تبويب غير مرئية ومسافة البادئة غير الصحيحة، بالإضافة إلى أي مشاكل هيكلية.

ميزة واحدة تدخل هي وضع ERB ل HTML2Haml.

html2haml -e < input.html > output.html.haml

فقط باستخدام -e سيحصل على Haml الخاص بك حوالي 95٪ من الطريق إلى هناك بدلا من 50٪ باستخدام HTML2Haml النقي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top