1. Лучший говнокод

    В номинации:
    За время:
  2. JavaScript / Говнокод #25702

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    var XMLHttpRequest = function(XHR, type, listener) {
    	return function() {
    		var xhr = new XHR;
    		xhr.addEventListener(type, listener);
    		return xhr;
    	};
    }(XMLHttpRequest, 'loadend', function(e) {
    	if (this.status == 0) {
    		console.log(e.type, 'network error');
    	} else {
    		console.log(e.type, this.status);
    	}
    });
    
    // js-library code...

    unicorn, 06 Июля 2019

    Комментарии (3)
  3. JavaScript / Говнокод #25700

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    xhr.upload.addEventListener('progress', function (e) {
      if (e.lengthComputable) {
        let percents = Math.round(e.loaded / e.total * 100)
        $(`#preloader-${preloaderId}`).html(`${percents}%`)
        $(`#preloader-${preloaderId}`).append(`<style>#preloader-${preloaderId}:before{ width: ${percents * 0.94}px;}</style>`);
      }
    }, false);

    Прогрессбар на псевдоэлементах.

    mesumev, 05 Июля 2019

    Комментарии (33)
  4. JavaScript / Говнокод #25699

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    function natRound() {
    
    	var out = []
    	    , fib = [0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233] // etc
    	    , _data = function() { // random values
    
    			var out = []
    				, count = Math.round( Math.random() * 100)
    			;
    
    			for(var i=0; i < count; i++ ) {
    				out.push( Math.random() * 100 ); // in km
    			}
    
    			return out.sort(function(a,b){ return a-b; });
    	    }()
    	    , roundTo = function (value) {
    			var i = fib.length;
    			while(i--) {
    				if ( value < fib[i] ) continue;
    				return i? i: value; // natural sorting
    			}
    	    }
    	;
    
    	for( var i=0; i<_data.length; i++ ) {
    		out.push( 'Value: [' + _data[i] + ']; Sort = [' + roundTo(_data[i]) + ']' );
    	}
    
    	return out;
    }

    Необходимо было учесть дискретность при сортировке расстояний в километрах.
    Например, в синтаксисе Elastic это выглядит так:

    "ranges" => [
    [ "to" => 1 ],
    [ "from" => 1, "to" => 3 ],
    [ "from" => 3, "to" => 5 ],
    [ "from" => 5],
    // etc
    ]

    Используя цепочку чисел Фибоначчи, как наиболее "человечески приятный" ряд, функция roundTo возвращает число для сортировки значений массива.

    bot, 04 Июля 2019

    Комментарии (89)
  5. C# / Говнокод #25691

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    void Start () {
    
            carRight1 = GameObject.Find("CarRight1");
            carRight2 = GameObject.Find("CarRight2");
            carRight3 = GameObject.Find("CarRight3");
            carRight4 = GameObject.Find("CarRight4");
            carRight5 = GameObject.Find("CarRight5");
            carRight6 = GameObject.Find("CarRight6");
            carRight7 = GameObject.Find("CarRight7");
            carRight8 = GameObject.Find("CarRight8");
            carRight9 = GameObject.Find("CarRight9");
            carRight10 = GameObject.Find("CarRight10");
            carRight11 = GameObject.Find("CarRight11");
            carRight12 = GameObject.Find("CarRight12");
            carRight13 = GameObject.Find("CarRight13");
            carRight14 = GameObject.Find("CarRight14");
            carRight15 = GameObject.Find("CarRight15");
            carRight16 = GameObject.Find("CarRight16");
            carRight17 = GameObject.Find("CarRight17");
    
            carLeft1 = GameObject.Find("CarLeft1");
            carLeft2 = GameObject.Find("CarLeft2");
            carLeft3 = GameObject.Find("CarLeft3");
            carLeft4 = GameObject.Find("CarLeft4");
            carLeft5 = GameObject.Find("CarLeft5");
            carLeft6 = GameObject.Find("CarLeft6");
            carLeft7 = GameObject.Find("CarLeft7");
            carLeft8 = GameObject.Find("CarLeft8");
            carLeft9 = GameObject.Find("CarLeft9");
            carLeft10 = GameObject.Find("CarLeft10");
            carLeft11 = GameObject.Find("CarLeft11");
            carLeft12 = GameObject.Find("CarLeft12");
            carLeft13 = GameObject.Find("CarLeft13");
            carLeft14 = GameObject.Find("CarLeft14");
            carLeft15 = GameObject.Find("CarLeft15");
            carLeft16 = GameObject.Find("CarLeft16");
            carLeft17 = GameObject.Find("CarLeft17");
            carLeft18 = GameObject.Find("CarLeft18");
            carLeft19 = GameObject.Find("CarLeft19");
            carLeft20 = GameObject.Find("CarLeft20");
            carLeft21 = GameObject.Find("CarLeft21");
            carLeft22 = GameObject.Find("CarLeft22");
    
            speed = 15f;
            //gameObject.transform.localScale = new Vector3(0, 0, 0);
        }
    	
    	// Update is called once per frame
    	void Update () {
    		
            carRight1.GetComponent<Rigidbody>().velocity = carRight1.transform.forward * speed;
            carRight2.GetComponent<Rigidbody>().velocity = carRight2.transform.forward * speed;
            carRight3.GetComponent<Rigidbody>().velocity = carRight3.transform.forward * speed;
            carRight4.GetComponent<Rigidbody>().velocity = carRight4.transform.forward * speed;
            carRight5.GetComponent<Rigidbody>().velocity = carRight5.transform.forward * speed;
            carRight6.GetComponent<Rigidbody>().velocity = carRight6.transform.forward * speed;
            carRight7.GetComponent<Rigidbody>().velocity = carRight7.transform.forward * speed;
            carRight8.GetComponent<Rigidbody>().velocity = carRight8.transform.forward * speed;
            carRight9.GetComponent<Rigidbody>().velocity = carRight9.transform.forward * speed;
            carRight10.GetComponent<Rigidbody>().velocity = carRight10.transform.forward * speed;
            carRight11.GetComponent<Rigidbody>().velocity = carRight11.transform.forward * speed;
            carRight12.GetComponent<Rigidbody>().velocity = carRight12.transform.forward * speed;
            carRight13.GetComponent<Rigidbody>().velocity = carRight13.transform.forward * speed;
            carRight14.GetComponent<Rigidbody>().velocity = carRight14.transform.forward * speed;
            carRight15.GetComponent<Rigidbody>().velocity = carRight15.transform.forward * speed;
            carRight16.GetComponent<Rigidbody>().velocity = carRight16.transform.forward * speed;
            carRight17.GetComponent<Rigidbody>().velocity = carRight17.transform.forward * speed;
    
            carLeft1.GetComponent<Rigidbody>().velocity = carLeft1.transform.forward * speed;
            carLeft2.GetComponent<Rigidbody>().velocity = carLeft2.transform.forward * speed;
            carLeft3.GetComponent<Rigidbody>().velocity = carLeft3.transform.forward * speed;
            carLeft4.GetComponent<Rigidbody>().velocity = carLeft4.transform.forward * speed;
            carLeft5.GetComponent<Rigidbody>().velocity = carLeft5.transform.forward * speed;
            carLeft6.GetComponent<Rigidbody>().velocity = carLeft6.transform.forward * speed;
            carLeft7.GetComponent<Rigidbody>().velocity = carLeft7.transform.forward * speed;
            carLeft8.GetComponent<Rigidbody>().velocity = carLeft8.transform.forward * speed;
            carLeft9.GetComponent<Rigidbody>().velocity = carLeft9.transform.forward * speed;
            carLeft10.GetComponent<Rigidbody>().velocity = carLeft10.transform.forward * speed;
            carLeft11.GetComponent<Rigidbody>().velocity = carLeft11.transform.forward * speed;
            carLeft12.GetComponent<Rigidbody>().velocity = carLeft12.transform.forward * speed;
            carLeft13.GetComponent<Rigidbody>().velocity = carLeft13.transform.forward * speed;
            carLeft14.GetComponent<Rigidbody>().velocity = carLeft14.transform.forward * speed;
            carLeft15.GetComponent<Rigidbody>().velocity = carLeft15.transform.forward * speed;
            carLeft16.GetComponent<Rigidbody>().velocity = carLeft16.transform.forward * speed;
            carLeft17.GetComponent<Rigidbody>().velocity = carLeft17.transform.forward * speed;
            carLeft18.GetComponent<Rigidbody>().velocity = carLeft18.transform.forward * speed;
            carLeft19.GetComponent<Rigidbody>().velocity = carLeft19.transform.forward * speed;
            carLeft20.GetComponent<Rigidbody>().velocity = carLeft20.transform.forward * speed;
            carLeft21.GetComponent<Rigidbody>().velocity = carLeft21.transform.forward * speed;
            carLeft22.GetComponent<Rigidbody>().velocity = carLeft22.transform.forward * speed;
    
        }

    Обнаружил на ПК у "коллеги" по цеху. AI для машинок... (Сами переменные не влезли, но легко понять как они заданы.)

    Morseliot, 29 Июня 2019

    Комментарии (53)
  6. PHP / Говнокод #25687

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    <script>
        var myMap;
        var ymapsReady = function () {
            myMap = new ymaps.Map('<?= $options['containerId'] ?>', {
                center: [55.751574, 37.573856],
                zoom: 9,
                controls: []
            }, {
                searchControlProvider: 'yandex#search'
            });
    
            <?php
            if(isset($options['centerCoordinates'])){
            ?>
            myMap.setCenter(<?= $options['centerCoordinates'] ?>);
            <?php
            }elseif(isset($options['centerAddress'])){?>
            ymaps.geocode('<?= $options['centerAddress'] ?>', {
                results: 1
            }).then(function (res) {
                var firstGeoObject = res.geoObjects.get(0),
                    coords = firstGeoObject.geometry.getCoordinates();
                myMap.setCenter(coords);
            });
            <?php
            }
    
            if (!empty($options['salesOffices'])) {
                foreach( $options['salesOffices'] as $i => $salesOffice ) {
                $address = ArrayHelper::getValue($salesOffice, 'actual_address');
                ?>
                ymaps.geocode('<?= $address ?>', {
                    results: 1
                }).then(function (res) {
                    let firstGeoObject = res.geoObjects.get(0),
                        coords = firstGeoObject.geometry.getCoordinates();
    
                    ymaps.geocode(coords, {
                        kind: 'metro',
                        results: 2
                    }).then(function (res) {
                        res.geoObjects.each(function (geoObject) {
                            $('#placemark_<?= $i ?>').find('.metro').append("<div class='metro-item'>" + geoObject.getPremise().replace(/(^|\s)метро(\s|$)/g, '').replace(/(^|\s)станция(\s|$)/g, '') + '</div>');
                        });
                    });
    
                    let customIcon = ymaps.templateLayoutFactory.createClass('<div id="placemark_icon_<?= $i ?>" class="placemark-block"><div class="placemark"></div><div class="placemark-text"><?= ArrayHelper::getValue($salesOffice, 'name') ?></div></div>');
    
                    myPlacemark[<?= $i ?>] = new ymaps.Placemark(coords,
                        {
                            balloonContent: '<?= ArrayHelper::getValue($salesOffice, 'name') ?>',
                            iconCaption: customIcon,
    
                            iconLayout: 'default#imageWithContent',
                            iconContentLayout: customIcon
                        }, {
                            hintContent: '<?= ArrayHelper::getValue($salesOffice, 'name') ?>',
                            iconLayout: 'default#imageWithContent',
                            iconImageHref: '',
                            iconImageOffset: [-15, -27],
                            iconContentLayout: customIcon
                        });
    
                    myMap.geoObjects.add(myPlacemark[<?= $i ?>]);
                });
    
                <?php
                }
            }
            ?>
        };
    
        setTimeout(function () {
            ymaps.ready(ymapsReady);
        }, <?=( isset($options['isModal']) ? 500 : 0 )?>);
    </script>

    iErroRi, 25 Июня 2019

    Комментарии (8)
  7. JavaScript / Говнокод #25671

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    function htmlspecialchars (s) {
        const el = document.createElement('span');
        el.innerText = s;
        return el.innerHTML.replace(/<br>/g, "\n");
    }

    Почему в жепаскрипте нет прямого доступа к этой функции? Почему я должен для этого работать с DOM или сам писать эту поеботу на рагулярках? Почему асё так анально?

    O4epegHou_nemyx, 10 Июня 2019

    Комментарии (121)
  8. Swift / Говнокод #25669

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    import SwiftUI
    
    
    struct LandmarkDetail: View {
        @EnvironmentObject var userData: UserData
        var landmark: Landmark
    
    
        var landmarkIndex: Int {
            userData.landmarks.firstIndex(where: { $0.id == landmark.id })!
        }
    
    
        var body: some View {
            VStack {
                MapView(landmark: landmark)
                    .frame(height: 300)
    
    
                CircleImage(image: landmark.image(forSize: 250))
                    .offset(y: -130)
                    .padding(.bottom, -130)
    
    
                VStack(alignment: .leading) {
                    HStack {
                        Text(landmark.name)
                            .font(.title)
    
    
                        Button(action: {
                            self.userData.landmarks[self.landmarkIndex].isFavorite.toggle()
                        }) {
                            if self.userData.landmarks[self.landmarkIndex].isFavorite {
                                Image(systemName: "star.fill")
                                    .foregroundColor(Color.yellow)
                            } else {
                                Image(systemName: "star")
                                    .foregroundColor(Color.gray)
                            }
                        }
                    }
    
    
                    HStack(alignment: .top) {
                        Text(landmark.park)
                            .font(caption)
                        Spacer()
                        Text(landmark.state)
                            .font(.caption)
                    }
                }
                .padding()
    
    
                Spacer()
            }
            .navigationBarTitle(Text(landmark.name), displayMode: .inline)
        }
    }

    https://developer.apple.com/tutorials/swiftui/handling-user-input

    Принципиально новый нескучный "декларативный" UI от компании Apple. В наличии:
    * магические константы
    * спагетти из замыканий
    * биндинги, страшные как атомная война
    * где-то внутри модная хипстерская реактивная либа

    На фоне этого кошмара qml кажется вершиной инженерной мысли

    Desktop, 08 Июня 2019

    Комментарии (45)
  9. Си / Говнокод #25665

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    // 3.7 Position-independent Limitation
    // At runtime an MRE program needs to be dynamically loaded into RAM. In other words, the addresses of the variables and functions can be dynamically assigned when they are loaded. This requires that the code be position-independent. If the code needs to determine the addresses at compile time, then it will fail to compile.
    // The following code exemplifies this error.
    /* 1 */
    int a[10], b[10];
    struct c {
            int* d;
            int* e;
    };
    struct c f = {a, b};
    
    /* 2 */
    void func1(void) {}
    typedef struct struct1 {
    int a;
    void (*fun)(void);
    } struct1;
    struct1 array1[1] = {0, func1};
    
    /* 3 */
    char *str = "test";
    char * list[] = {"zero", "one", "two"};
    
    // The solution is as follows:
    /* 1 */
    int a[10], b[10];
    struct c {
        int* d;
        int* e;
    };
    struct c f;
    void init1(void) {
        f.d = a;
        f.e = b;
    }
    
    /* 2 */
    void func1(void) {}
    typedef struct struct1 {
        int a;
        void (*fun)(void);
    } struct1;
    struct1 array1[1];
    void init2(void) {
        array1[0].a = 0;
        array1[0].fun = func1;
    }
    
    /* 3 */
    char str[] = "test";
    char list[][10] = {"zero", "one", "two"};

    MRE Developer FAQ
    This document contains information that is proprietary to MediaTek Inc.

    Загрузчик программ из MRE не умеет сложные фиксапы, поэтому изменяйте свой код, чтобы в нём не было адресов, которые нужно определять в момент загрузки.

    PA3yMHblu_nemyx, 07 Июня 2019

    Комментарии (12)
  10. 1C / Говнокод #25664

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    Если ВидОперации = Перечисления.МОЛ_ВидыОперацийПоступленияСырья.Перемещение  Тогда
    		ДоговорКонтрагента = "";
    		ТипЦен = "";
    		Если Сырье.Количество()>0 Тогда
    			Для каждого СтрокаСырье Из Сырье Цикл
    				СтрокаСырье.Цена = 0;
    				СтрокаСырье.Сумма = 0;
    				СтрокаСырье.СуммаНДС = 0;
    			КонецЦикла;	
    		КонецЕсли;	
    			
    	КонецЕсли;

    Добавлена проверка, чтобы цикл вдруг не выполнился при пустой таб части!
    Кстати выполняется при открытии формы и постоянно вызывает модифицированность

    Молокозавод 1.3.121

    doom2good, 06 Июня 2019

    Комментарии (26)
  11. JavaScript / Говнокод #25653

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    <script>
            window["flags"] = {
            "purcTOFlag": "true" == "true" ? true : false,
            "ENBL_CANCEL_POLICY": "true" == "true" ? true : false,
            "ENBL_BACKUP_CHECK_OLD_DEVICES": "false" == "true" ? true : false,
            "ENBL_DIRECT_ACCESS_LINKS": "true" == "true" ? true : false,
            "ENBL_NEW_ABG_URL": "true" == "true" ? true : false,
            "cr_9839666": "true" == "true" ? true : false,
            "cubaCRFlag": "true" == "true" ? true : false,
            "cubaMultiCityCRFlag": "true" == "true" ? true : false,
            "youthCRFlag": "true" == "true" ? true : false,
            "ENABLE_AFOP_MODE": "true" == "true" ? true : false,
            "SHARE_ITINERARY_ON_FACEBOOK": "false" == "true" ? true : false,
            "cr_11668201": "true" == "true" ? true : false,
            "hotelCRFlag": "true" == "true" ? true : false,
            "cr_adoshareitinerary": "false" == "true" ? true : false,
            "ROUNDOFF_AMOUNT_FOR_US_EDITION": "true" == "true" ? true : false,
            "hideSeatPromotionalBanner": "true" == "true" ? true : false,
            "enablePremiumRougeCR": "true" == "true" ? true : false,
            "availFareSplit": "true" == "true" ? true : false,
            "improvedMixedCabin": "true" == "true" ? true : false,
            "adoPassengerPrepopulate": "true" == "true" ? true : false,
            "adoIataInformation": "true" == "true" ? true : false,
            "premiumRougeSeatSelection": "true" == "true" ? true : false,
            "displayIntlTerminal": "true" == "true" ? true : false,
            "continueDisabledLightboxIsEnabled": "true" == "true" ? true : false,
            "createAeroplanFromConf": "true" == "true" ? true : false,
            "contOnAvailPage": "true" == "true" ? true : false,
            "alpiSpecialAssistanceCRFlag": "true" == "true" ? true : false,
            "removePaxTitle": "false" == "true" ? true : false,
            "perDiemInsurance": "true" == "true" ? true : false,
            "isVisaCheckoutEnabled": "true" == "true" ? true : false,
            "isCashRewardEnabled": "true" == "true" ? true : false,
            "masterPassCRFlag": "true" == "true" ? true : false,
            "masterPassAllowedEdition": "CA\-en:CA\-fr:CA\-zh",
            "youthphase2CRFlag": "true" == "true" ? true : false,
            "isCitylistPerfEnabled": "true" == "true" ? true : false,
            "isSingleTravelOptionEnabled": "false" == "true" ? true : false,
            "retainPaymentInformation": "true" == "true" ? true : false,
            "hotelChildAgeCR": "true" == "true" ? true : false,
            "displayGeoFirst": "true" == "true" ? true : false,
            "displayDiscAvail": "true" == "true" ? true : false,
            "premiumRougeUpsell": "true" == "true" ? true : false,
            "enableReplaceOpinionLabs": "true" == "true" ? true : false,
            "displayOalRef": "true" == "true" ? true : false,
            "newTravelOptionsLayoutFlag": "true" == "true" ? true : false,
            "hotelWidgetAPI": "true" == "true" ? true : false,
            "enableCombinedPhoneNo": "true" == "true" ? true : false,
            "hideTripSummaryForMobile": "true" == "true" ? true : false,
            "enableSecureAttribute": "true" == "true" ? true : false,
            "enhancedPreviewSeatMap": "true" == "true" ? true : false,
            "enhancedSeatMap": "true" == "true" ? true : false,
            "firstClassCabinCR": "true" == "true" ? true : false,
             .
             .
    }

    Taken from aircanada.com. Enjoy!

    devfromhell, 31 Мая 2019

    Комментарии (88)