בתוך ה מאמר העוסק בתכונות של OptionParser דנו בכמה מהסיבות שהופכות את השימוש ב- OptionParser ב- רובי עדיף על ידי חיפוש ידני באמצעות ARGV לניתוח פקודות ביד. עכשיו הגיע הזמן ללמוד כיצד להשתמש ב- OptionParser ותכונותיו.
קוד הדף הבא ישמש לכל הדוגמאות במדריך זה. כדי לנסות אחת מהדוגמאות, פשוט ציין את הדוגמאות opts.on חסום לצד הערת ה- TODO. הפעלת התוכנית תדפיס את מצב האפשרויות שיש ואת ARGV, ותאפשר לך לבדוק את השפעות המתגים שלך.
#! / usr / bin / env אודם
דורש 'optparse'
דורש 'עמ'
# חשיש זה יכיל את כל האפשרויות
# מנותח משורת הפקודה על ידי
# OptionParser.
אפשרויות = {}
optparse = OptionParser.new do | opts |
# TODO: הצב כאן אפשרויות בשורת הפקודה
# זה מציג את מסך העזרה, כל התוכניות הן
# הניח שיש אפשרות זו.
opts.on ('-h', '- help', 'הצגת מסך זה') לעשות
מכניס בקשות
יציאה
סוף
סוף
# ניתוח את שורת הפקודה. זכור שיש שתי צורות
# של שיטת הניתוח. שיטת הניתוח פשוט מנתחת
# ARGV, בעוד ה"ניתוח! " השיטה מנתחת ARGV ומסירה
# כל האפשרויות שנמצאו שם, כמו גם כל הפרמטרים עבור
# האפשרויות. מה שנותר הוא רשימת הקבצים לשינוי גודל.
optparse.parse!
עמ '"אפשרויות:", אפשרויות
עמ '"ARGV:", ARGV
מתג פשוט
מתג פשוט הוא ויכוח ללא טפסים אופציונליים או ללא פרמטרים. ההשפעה תהיה פשוט להגדיר דגל באופציות חשיש. לא יועברו פרמטרים אחרים ל- ב שיטה.
אפשרויות [: פשוט] = שקר
opts.on ('-s', '- simple', "טיעון פשוט") כן
אפשרויות [: פשוט] = נכון
סוף
מתג עם פרמטר חובה
בוררים שלוקחים פרמטר צריכים רק לציין את שם הפרמטר בצורה הארוכה של המתג. לדוגמה, "-f", "- קובץ קובץ" פירושו שהמתג -f או -File לוקח פרמטר יחיד בשם FILE, ופרמטר זה הוא חובה. אינך יכול להשתמש בתיקייה -f או -file גם בלי להעביר לו פרמטר.
אפשרויות [: mand] = ""
opts.on ('-m', '- FILE FILE', "טיעון חובה") do | f |
אפשרויות [: mand] = f
סוף
מתג עם פרמטר אופציונלי
פרמטרים של מתג אינם חייבים להיות חובה, הם יכולים להיות אופציונליים. כדי להכריז על פרמטר מתג אופציונלי, מקם את שמו בסוגריים בתיאור המתגים. לדוגמה, "--logfile [FILE]" פירושו שהפרמטר FILE הוא אופציונלי. אם לא סופקה, התוכנית תקבל ברירת מחדל שפויה, כגון קובץ בשם log.txt.
בדוגמה, המילה a = b || ג משמש. זהו רק שורטורפציה עבור "a = b, אבל אם b הוא שקרי או אפסי, a = c".
אפשרויות [: opt] = שקר
opts.on ('-o', '- אופציונלי [OPT]', "טיעון אופציונלי") do | f |
אפשרויות [: opt] = f || "שום דבר"
סוף
המרה אוטומטית לציפה
OptionParser יכול להמיר אוטומטית טיעון לסוגים מסוימים. אחד הסוגים הללו הוא Float. כדי להמיר אוטומטית את הטיעונים שלך למעבר ל Float, העבירו את Float ל- ב שיטה לאחר מיתרי תיאור המתגים שלך.
המרות אוטומטיות שימושיות. לא רק שהם חוסכים לך את שלב המרת המחרוזת לסוג הרצוי, אלא גם בודקים את הפורמט עבורך ויזרקו חריגה אם הוא מעוצב בצורה שגויה.
אפשרויות [: לצוף] = 0.0
opts.on ('-f', '- float NUM', Float, "Convert to float") לעשות | f |
אפשרויות [: לצוף] = f
סוף
כמה סוגים אחרים ש- OptionParser יכול להמיר אליהם כוללים באופן אוטומטי זמן ומספר שלם.
רשימות של טיעונים
ניתן לפרש טענות כרשימות. ניתן לראות בכך המרה למערך, לאחר שהמירתם לציפה. בעוד שמחרוזת האפשרויות שלך יכולה להגדיר את הפרמטר שיקרא "a, b, c", OptionParser תאפשר באופן עיוור לכל מספר אלמנטים ברשימה. לכן, אם אתה זקוק למספר ספציפי של אלמנטים, הקפד לבדוק את אורך המערך בעצמך.
אפשרויות [: רשימה] = []
opts.on ('-l', '- list a, b, c', מערך, "רשימת פרמטרים") do | l |
אפשרויות [: רשימה] = l
סוף
סט ויכוחים
לפעמים הגיוני להגביל ויכוחים למעבר לכמה אפשרויות. לדוגמה, המתג הבא ייקח פרמטר חובה אחד בלבד, והפרמטר חייב להיות אחד ממנו כן, לא או אולי. אם הפרמטר הוא בכלל משהו אחר, ייזרק חריג.
לשם כך, העבירו רשימה של פרמטרים מקובלים כסמלים לאחר מחרוזות תיאור המתגים.
אפשרויות [: סט] =: כן
opts.on ('-s', '- set OPT', [: כן,: לא,: אולי], "פרמטרים מקבוצה") do | s |
אפשרויות [: set] = s
סוף
טפסים שוללים
מתגים יכולים להיות בעלי צורה שלילית. המתג - לא מוסמך יכול להיות כזה שעושה את ההשפעה ההפוכה, המכונה - לא נשלל. כדי לתאר זאת במחרוזת תיאור המתגים, מקם את החלק החלופי בסוגריים: - [לא-] שולל. אם נתקלת בטופס הראשון, אמת תועבר לחסימה, ושווא ייחסם אם יתקיים בטופס השני.
אפשרויות [: neg] = שקר
opts.on ('-n', '- [no-] שולל "," צורות שליליות ") do | n |
אפשרויות [: neg] = n
סוף