შესავალი
ქართულსკრიპტი არის ენა რომელიც კომპილირდება ჯავასკრიპტში. იგი აწყობილია CoffeeScript-ის კომპილერის ბაზაზე და აქვს ყველა CoffeScript -ის შესაძლებლობა, მხოლოდ keyword-ები არის ქართული. რადგანაც იგი CoffeeScript ბაზაზეა, CoffeeScript კოდიც ვალიდურია.
Node.Js
იმისთვის რომ Node.js-ზე გავუშვათ/დავაკომპილიროთ ქართულსკრიპტის კოდი საჭიროა ჯერ დავაყენოთ ქართულსკრიპტი npm-დან შემდეგი ბრძანების გაშვებით ტერმინალში npm install -g qartulskripti. შემდეგ შეგვიძლია გავუშვათ ქართულსკრიპტის REPL - qartulskripti ან დავაკომპილიროთ რაიმე ქართულსკრიპტის ფაილი ჯავასკრიპტში qartulskripti -c ., ეს დააკომპილირებს ყველა ქართულსკრიპტის ფაილს ჯავასკრიპტში.Browser
ქართულსკრიპტი როგორც CoffeeScript საშუალებას იძლევა ბრაუზერში გამოვიყენოთ. თუცმა მისი გამოყენება რეკომენდირებული არ არის Production-ში ^_^. იმისთვის რომ კოდმა ბრაუზერში იმუშაოს საჭიროა საიტზე ჩავტვირთოთ ქართულსკრიპტი, რომლის წყაროც ბრაუზერისთვის შეგიძლიათ გადმოწეროთ აქედან (მინიფიცირებულია). კოდის დასაწერად კი script ტეგს უნდა გავუწეროთ ტიპი 'text/qartulskripti': <script type="text/qartulskripti" src="somefile.qs"></script>
მიმოხილვა
ქართულსკრიპტის კოდის მაგალითირაოდენობა = 20
გამარჯობა = 'გამარჯობა '
დავბეჭდოთ = კი
ბევრი_გამარჯობა = '';
ბევრი_გამარჯობა += გამარჯობა სანამ რაოდენობა-- მეტია 0ზე
დაბეჭდე ბევრი_გამარჯობა
წლები =
ნინო : 1991
გიორგი : 1992
თამუნა : 1990
ირაკლი : 1992
როცა სახელი, წელი ეკუთვნის წლები
დაბეჭდე "#{სახელი} დაიბადა #{წელი} წელს"
როცა რიცხვი შედის [1..10] იზრდება 2ით
დაბეჭდე რიცხვი
სია = Object.keys წლები
სახელი = 'გიორგი'
დაბეჭდე "სახელი '#{სახელი}' შედის სიაში" თუ სახელი შედის სია შიvar ბევრი_გამარჯობა, გამარჯობა, დავბეჭდოთ, რაოდენობა, რიცხვი, სახელი, სია, წელი, წლები, _i,
__indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
რაოდენობა = 20;
გამარჯობა = 'გამარჯობა ';
დავბეჭდოთ = true;
ბევრი_გამარჯობა = '';
while (რაოდენობა-- > 0) {
ბევრი_გამარჯობა += გამარჯობა;
}
დაბეჭდე(ბევრი_გამარჯობა);
წლები = {
ნინო: 1991,
გიორგი: 1992,
თამუნა: 1990,
ირაკლი: 1992
};
for (სახელი in წლები) {
წელი = წლები[სახელი];
დაბეჭდე("" + სახელი + " დაიბადა " + წელი + " წელს");
}
for (რიცხვი = _i = 1; _i <= 10; რიცხვი = _i += 2) {
დაბეჭდე(რიცხვი);
}
სია = Object.keys(წლები);
სახელი = 'გიორგი';
if (__indexOf.call(სია, სახელი) >= 0) {
დაბეჭდე("სახელი '" + სახელი + "' შედის სიაში");
}
Javascript ექვივალენტები
| ქართულსკრიპტი | CoffeeScript | JavaScript |
|---|---|---|
| არის | is | === |
| არარის | isnt | !== |
| არ | not | ! |
| და | and | && |
| ან | or | || |
| კი | true, yes, on | true |
| არა | false, no, off | false |
| მეტია | > | > |
| ნაკლებია | < | < |
| @, ეს | @, this | this |
| ეკუთვნის | of | in |
| შედის | in | --- |
| როცა | for | --- |
| სანამ | while | --- |
| მანამ | until | --- |
| შეწყვიტე | break | break |
| გამოტოვე | continue | continue |
| იზრდება | by | --- |
| თუ | if | if |
| მაშინ | then | --- |
| თუარადა | else | else |
| დააბრუნე | return | return |
| წაშალე | delete | delete |
| ახალი | new | new |
| ტიპი | typeof | typeof |
| განუსაზღვრელი | undefined | undefined |
| შეამოწმე | switch | switch |
| როდესაც | when | case |
| ცადე | try | try |
| დაიჭირე | catch | catch |
| საბოლოოდ | finally | finally |
| კლასი | class | --- |
| მემკვიდრეა | extends | --- |
| წინაპარი | super | --- |
| ით, ზე, ში, ს | * WHITESPACE | * WHITESPACE |
პირობითი ოპერატორები
რადგან == ხშირად არასასურველ შედარებებს აკეთებს ამიტომ იგი ავტომატურად კომპილირდება ===. ალტერნატიულად შეიძლება გამოიყენოთ არის. უარყოფისთვის ! მაგივრად შეიძლება გამოვიყენოთ არ და != მაგივრად არარის, რომელიც დაკომპილირდება !==-ში.მაგალითები:
#მარტივი პირობა
თუ 0 არის არა
დაბეჭდე "0 არის არა"
თუარადა
დაბეჭდე "0 არ არის არა"
რიცხვი = 14
თუ რიცხვი ნაკლებია 20ზე ან რიცხვი მეტია 50ზე
დაბეჭდე რიცხვი
#ე.წ. inline პირობა
თუ 0 არის '3' მაშინ დაბეჭდე '3 არის "3"' თუარადა დაბეჭდე '3 არ არის "3"'
პასუხი =
სტატუსი : 200
#მინიჭება პირობის შესრულების შემთხვევაში
მესიჯი = 'მოთხოვნა წარმატებით დასრულდა' თუ პასუხი.სტატუსი არის 200
# ? :
მესიჯი = თუ პასუხი.სტატუსი არის 200 მაშინ 'მოთხოვნა წარმატებით დასრულდა' თუარადა 'მოთხოვნა წარუმატებლად დასრულდა'
# შეამოწმე თუ არსებობს key
თუ პასუხი.სტატუსი?
დაბეჭდე 'სტატუსი გვაქვს და სტატუსია #{პასუხი.სტატუსი}'
# შეამოწმე თუ არსებობს, მიანიჭე რამე ნაგულისხმები მნიშვნელობა
სტატუსი = პასუხი.სტატუსი ? 500
მესიჯი = რაიმე_მესიჯი ? '...'var მესიჯი, პასუხი, რიცხვი, სტატუსი, _ref;
if (0 === false) {
დაბეჭდე("0 არის არა");
} else {
დაბეჭდე("0 არ არის არა");
}
რიცხვი = 14;
if (რიცხვი < 20 || რიცხვი > 50) {
დაბეჭდე(რიცხვი);
}
if (0 === '3') {
დაბეჭდე('3 არის "3"');
} else {
დაბეჭდე('3 არ არის "3"');
}
პასუხი = {
სტატუსი: 200
};
if (პასუხი.სტატუსი === 200) {
მესიჯი = 'მოთხოვნა წარმატებით დასრულდა';
}
მესიჯი = პასუხი.სტატუსი === 200 ? 'მოთხოვნა წარმატებით დასრულდა' : 'მოთხოვნა წარუმატებლად დასრულდა';
if (პასუხი.სტატუსი != null) {
დაბეჭდე('სტატუსი გვაქვს და სტატუსია #{პასუხი.სტატუსი}');
}
სტატუსი = (_ref = პასუხი.სტატუსი) != null ? _ref : 500;
მესიჯი = typeof რაიმე_მესიჯი !== "undefined" && რაიმე_მესიჯი !== null ? რაიმე_მესიჯი : '...';