შესავალი

ქართულსკრიპტი არის ენა რომელიც კომპილირდება ჯავასკრიპტში. იგი აწყობილია 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 ? რაიმე_მესიჯი : '...';