User content directive for AngularJS

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://code.angularjs.org/1.0.0/angular-1.0.0.js"></script>
<div ng-controller="MyCtrl">
    <div class="test" text-direction-on="ltrMessage">{{ltrMessage}}</div>
    <div class="test" text-direction>{{ltrMessage}}</div> 
    <div class="test" text-direction-on="rtlMessage">{{rtlMessage}}</div>
    <div class="test" text-direction>{{rtlMessage}}</div> 
</div>

CSS

.test {
  width: 115px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  border: 1px blue solid;
  padding: 4px;
  margin: 5px;
}

JavaScript

var app=angular.module('myApp', []);

function MyCtrl($scope) {
		$scope.ltrMessage = "all you need is love";
    $scope.rtlMessage = "כל מה שאתה צריך היא אהבה";
}

// Полностью см. https://github.com/twitter/RTLtextarea/blob/master/src/RTLText.module.js
function getDirection(plainText) {
    var rtlChar = /[\u0590-\u083F]|[\u08A0-\u08FF]|[\uFB1D-\uFDFF]|[\uFE70-\uFEFF]/mg;
    return plainText.match(rtlChar) ? "rtl" : "ltr";
}


app.directive('textDirectionOn', [function() {
      return {
        link: function(scope, element, attr) {
           var text = scope.$eval(attr.textDirectionOn);
           element[0].style.direction = getDirection(text);
           if (!element[0].title) {
           		element[0].title = text;
           }
        }
      };
}])
.directive('textDirection', ['$timeout', function($timeout) {
      return {
        link: function(scope, element, attr) {
        	 // timeout to take time
           // to angular to resolve template
           $timeout(function() {
             var text = element[0].innerText;
             element[0].style.direction = getDirection(text);
             if (!element[0].title) {
           	  	element[0].title = text;
             }
           }, 0);
        }
      };
}]);