Allowed for alias names for language ids

This commit is contained in:
bashirs 2013-02-14 10:09:49 -08:00
Родитель f81c3cf195
Коммит bfa2870ed3
20 изменённых файлов: 200 добавлений и 1 удалений

Просмотреть файл

@ -44,6 +44,36 @@ namespace ColorCode.Common
Assert.Equal(expected, actual);
}
[Fact]
public void Will_find_a_loaded_language_with_a_matching_alias()
{
var expected = new StubLanguage();
expected.id__getValue = "fnord";
expected.Alias_getValue = "alias";
var loadedLanguages = new Dictionary<string, ILanguage>();
loadedLanguages.Add(expected.Id, expected);
var languageRepository = new LanguageRepository(loadedLanguages);
ILanguage actual = languageRepository.FindById(expected.Alias_getValue);
Assert.Equal(expected, actual);
}
[Fact]
public void Will_return_null_if_no_loaded_languages_match_the_language_identifier_nor_the_alias()
{
var expected = new StubLanguage();
expected.id__getValue = "fnord";
expected.Alias_getValue = "alias";
var loadedLanguages = new Dictionary<string, ILanguage>();
loadedLanguages.Add(expected.Id, expected);
var languageRepository = new LanguageRepository(loadedLanguages);
ILanguage actual = languageRepository.FindById("fake");
Assert.Null(actual);
}
[Fact]
public void Will_return_null_if_no_loaded_languages_match_the_language_identifier()
{

Просмотреть файл

@ -13,6 +13,7 @@ namespace ColorCode.Stubs
public bool FirstLinePattern__getInvoked;
public string FirstLinePattern__getValue;
public string CssClassName_getValue;
public string Alias_getValue;
public string Id
{
@ -46,6 +47,10 @@ namespace ColorCode.Stubs
}
}
public bool HasAlias(string lang)
{
return (lang == Alias_getValue);
}
public string CssClassName
{

Просмотреть файл

@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace ColorCode.Common
@ -32,8 +33,17 @@ namespace ColorCode.Common
try
{
// If we have a matching name for the language then use it
// otherwise check if any languages have that string as an
// alias. For example: "js" is an alias for Javascript.
if (loadedLanguages.ContainsKey(languageId))
{
language = loadedLanguages[languageId];
}
else
{
language = loadedLanguages.FirstOrDefault(x => x.Value.HasAlias(languageId)).Value;
}
}
finally
{

Просмотреть файл

@ -101,6 +101,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -72,6 +72,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -119,6 +119,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -121,6 +121,20 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "aspx-cs":
case "aspx (cs)":
case "aspx(cs)":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -133,6 +133,20 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "aspx-vb":
case "aspx (vb.net)":
case "aspx(vb.net)":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -97,6 +97,19 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "cs":
case "c#":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -64,6 +64,19 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "c++":
case "c":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -50,6 +50,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -123,6 +123,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -70,6 +70,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -70,6 +70,18 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "js":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -77,6 +77,20 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "php3":
case "php4":
case "php5":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -127,5 +127,18 @@ namespace ColorCode.Compilation.Languages
};
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "posh":
case "ps1":
return true;
default:
return false;
}
}
}
}

Просмотреть файл

@ -90,6 +90,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -70,6 +70,22 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
switch (lang.ToLower())
{
case "vb.net":
case "vbnet":
case "vb":
case "visualbasic":
case "visual basic":
return true;
default:
return false;
}
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -129,6 +129,11 @@ namespace ColorCode.Compilation.Languages
}
}
public bool HasAlias(string lang)
{
return false;
}
public override string ToString()
{
return Name;

Просмотреть файл

@ -34,5 +34,10 @@ namespace ColorCode
/// Get the CSS class name to use for a language
/// </summary>
string CssClassName { get; }
/// <summary>
/// Returns true if the specified string is an alias for the language
/// </summary>
bool HasAlias(string lang);
}
}